diff --git a/e2e/integration/menu.e2e.ts b/e2e/integration/menu.e2e.ts index e1b053d1..533fb0ea 100644 --- a/e2e/integration/menu.e2e.ts +++ b/e2e/integration/menu.e2e.ts @@ -25,6 +25,29 @@ describe('Menu', () => { .should('be.visible'); }); + it('should sync active menu items while scroll back and scroll again', () => { + cy.contains('h2', 'Add a new pet to the store') + .scrollIntoView() + .wait(100) + .get('[role=menuitem].active') + .children() + .last() + .should('have.text', 'Add a new pet to the store') + .should('be.visible'); + + cy.contains('h1', 'Swagger Petstore') + .scrollIntoView() + .wait(100) + + cy.contains('h1', 'Introduction') + .scrollIntoView() + .wait(100) + .get('[role=menuitem].active') + .should('have.text', 'Introduction'); + + cy.url().should('include', '#section/Introduction'); + }); + it('should update URL hash when clicking on menu items', () => { cy.contains('[role=menuitem].-depth1', 'pet').click({ force: true }); cy.location('hash').should('equal', '#tag/pet'); diff --git a/src/services/MenuStore.ts b/src/services/MenuStore.ts index ac60fee8..65f6c7c8 100644 --- a/src/services/MenuStore.ts +++ b/src/services/MenuStore.ts @@ -210,6 +210,7 @@ export class MenuStore { this.deactivate(this.activeItem); if (!item) { + this.activeItemIdx = -1; this.history.replace('', rewriteHistory); return; }