Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion packages/driver/cypress/e2e/commands/navigation.cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -2780,7 +2780,7 @@ describe('src/cy/commands/navigation', () => {
})

context('resets state', () => {
it('resets the server state', () => {
it('resets the server state before test runs', () => {
cy.stub(Cypress, 'backend').log(false).callThrough()

Cypress.emitThen('test:before:run:async', {
Expand All @@ -2791,6 +2791,18 @@ describe('src/cy/commands/navigation', () => {
expect(Cypress.backend).to.be.calledWith('reset:server:state')
})
})

it('resets the server state after test completes', () => {
cy.stub(Cypress, 'backend').log(false).callThrough()

Cypress.emitThen('test:after:run:async', {
id: 'r1',
currentRetry: 1,
})
.then(() => {
expect(Cypress.backend).to.be.calledWith('reset:server:state')
})
})
})
})

Expand Down
9 changes: 9 additions & 0 deletions packages/driver/src/cy/commands/navigation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -665,6 +665,15 @@ export default (Commands, Cypress, cy, state, config) => {
return Cypress.backend('reset:server:state')
})

// Clear ServiceWorkerManager state immediately after test completion
// to prevent memory accumulation that can cause browser crashes
// This is in addition to the cleanup in test:before:run:async
Cypress.on('test:after:run:async', () => {
// Clear service worker manager state to prevent memory leaks
// This helps prevent crashes that occur during cleanup/teardown
return Cypress.backend('reset:server:state')
})

Cypress.on('test:before:run', reset)

Cypress.on('stability:changed', async (bool, event) => {
Expand Down
Loading