diff --git a/frontend/website/cypress/e2e/set-layout.cy.ts b/frontend/website/cypress/e2e/set-layout.cy.ts index aad6b24..0e5a04b 100644 --- a/frontend/website/cypress/e2e/set-layout.cy.ts +++ b/frontend/website/cypress/e2e/set-layout.cy.ts @@ -51,7 +51,7 @@ describe('set element layout', () => { interceptAuthenticatedUser() }) - it('opens a set from the dashboard and shows its full hierarchy', () => { + it('opens a set with a foldable element hierarchy', () => { cy.intercept('GET', '**/api/sets', { statusCode: 200, body: { sets: [{ id: 41, name: 'Bible' }] }, @@ -79,13 +79,35 @@ describe('set element layout', () => { cy.get('[data-element-id="1"] > .element-node__card') .should('contain.text', 'Genesis') .and('contain.text', 'book') + .and('have.attr', 'aria-expanded', 'false') + .and('have.attr', 'aria-controls', 'element-children-1') + cy.get('[data-element-id="2"] > .element-node__card').should( + 'not.match', + 'button', + ) + cy.get('[data-element-id="3"]').should('not.exist') + + cy.get('[data-element-id="1"] > button.element-node__card').click() + cy.get('[data-element-id="1"] > .element-node__card').should( + 'have.attr', + 'aria-expanded', + 'true', + ) cy.get('[data-element-id="1"] > ol > li').then(($nodes) => { expect([...$nodes].map((node) => node.dataset.elementId)).to.deep.equal([ '3', '5', ]) }) - cy.get('[data-element-id="3"] > ol > li') + cy.get('[data-element-id="4"]').should('not.exist') + + cy.get('[data-element-id="3"] > button.element-node__card').click() + cy.get('[data-element-id="3"] > .element-node__card').should( + 'have.attr', + 'aria-expanded', + 'true', + ) + cy.get('#element-children-3 > li') .should('have.length', 1) .and('have.attr', 'data-element-id', '4') cy.contains('.element-node__card', 'Chapter 1') @@ -93,6 +115,15 @@ describe('set element layout', () => { .find('.element-node__kind') .should('have.text', 'Chapter_sections-v2') .and('have.css', 'text-transform', 'none') + + cy.get('[data-element-id="1"] > button.element-node__card').click() + cy.get('[data-element-id="3"]').should('not.exist') + + cy.get('[data-element-id="1"] > button.element-node__card').click() + cy.get('[data-element-id="4"] > .element-node__card').should( + 'contain.text', + 'Chapter 1', + ) }) it('shows loading and empty layout states', () => { @@ -183,6 +214,8 @@ describe('set element layout', () => { cy.wait('@me') cy.wait('@layout') + cy.get('[data-element-id="1"] > button.element-node__card').click() + cy.get('[data-element-id="3"] > button.element-node__card').click() cy.contains('.element-node__card', 'Chapter 1').should('be.visible') cy.document().then((document) => { expect(document.documentElement.scrollWidth).to.be.at.most(