diff --git a/frontend/rabbi_gerzi/cypress/e2e/element-sibling-navigation.cy.ts b/frontend/rabbi_gerzi/cypress/e2e/element-sibling-navigation.cy.ts new file mode 100644 index 0000000..7e6f3fb --- /dev/null +++ b/frontend/rabbi_gerzi/cypress/e2e/element-sibling-navigation.cy.ts @@ -0,0 +1,75 @@ +function loginAsAdmin(): void { + cy.visit('/login') + + cy.get('[data-cy="login-email"]').type('admin@rabbigerzi.test') + cy.get('[data-cy="login-password"]').type('password123!@#') + cy.get('[data-cy="login-submit"]').click() + + cy.url().should('eq', Cypress.config().baseUrl + '/') + cy.getCookie('auth_token').should('exist') +} + +describe('element sibling navigation', () => { + it('navigates public same-parent elements with wraparound', () => { + cy.visit('/element/1') + cy.contains('h1', 'Baderech HaAvodah').should('be.visible') + cy.get('[data-cy="element-sibling-navigation"]').should('not.exist') + + cy.visit('/element/2') + cy.contains('h1', '1. Introduction').should('be.visible') + cy.get('[data-cy="element-sibling-navigation"]').should('be.visible') + cy.get('[data-cy="element-sibling-previous"]') + .should('have.attr', 'href', '/element/7') + .click() + + cy.location('pathname').should('eq', '/element/7') + cy.contains('h1', '6. Fluid Integration').should('be.visible') + cy.get('[data-cy="element-sibling-next"]') + .should('have.attr', 'href', '/element/2') + .click() + + cy.location('pathname').should('eq', '/element/2') + cy.contains('h1', '1. Introduction').should('be.visible') + cy.get('[data-cy="element-sibling-next"]') + .should('have.attr', 'href', '/element/3') + .click() + + cy.location('pathname').should('eq', '/element/3') + cy.contains('h1', '2. Foundations').should('be.visible') + }) + + it('navigates admin same-parent elements with wraparound', () => { + loginAsAdmin() + + cy.visit('/admin/element/1') + cy.get('[data-cy="admin-element-title"]') + .should('have.value', 'Baderech HaAvodah') + cy.get('[data-cy="admin-sibling-navigation"]').should('not.exist') + + cy.visit('/admin/element/2') + cy.get('[data-cy="admin-element-title"]') + .should('have.value', '1. Introduction') + cy.get('[data-cy="admin-sibling-navigation"]').should('be.visible') + cy.get('[data-cy="admin-sibling-previous"]') + .should('have.attr', 'href', '/admin/element/7') + .click() + + cy.location('pathname').should('eq', '/admin/element/7') + cy.get('[data-cy="admin-element-title"]') + .should('have.value', '6. Fluid Integration') + cy.get('[data-cy="admin-sibling-next"]') + .should('have.attr', 'href', '/admin/element/2') + .click() + + cy.location('pathname').should('eq', '/admin/element/2') + cy.get('[data-cy="admin-element-title"]') + .should('have.value', '1. Introduction') + cy.get('[data-cy="admin-sibling-next"]') + .should('have.attr', 'href', '/admin/element/3') + .click() + + cy.location('pathname').should('eq', '/admin/element/3') + cy.get('[data-cy="admin-element-title"]') + .should('have.value', '2. Foundations') + }) +})