Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

373
Views
Cómo restablecer Cypress window.location.href después de la prueba

Estoy probando una interfaz de usuario que al hacer clic actualiza window.location.href . Tengo dos pruebas, la primera funciona, pero la segunda comienza en la ubicación establecida por la interfaz de usuario en la prueba anterior. Esto es incorrecto y evita que la prueba dos comience en la página correcta.

¿Cómo puedo restablecer window.location.href o simplemente la ubicación del navegador Cypress en general a donde estaba al comienzo de la primera prueba?

Revisé window.location.href al comienzo de la segunda prueba y parece autogenerado, por lo que no creo que sea prudente intentar codificar ese valor en window.location.href al comienzo de la segunda prueba.

Buscando algo que pueda ejecutar en afterEach .

Prueba

 it.only('should send asynchronous analytics event after provider selection click', () => { rewire$useFlag(() => true); cy.location().then((location) => console.log('window !!')); const analyticsAsyncStub = cy.stub().as('sendAnalyticsAsyncStub'); rewire$sendAnalyticsAsync(analyticsAsyncStub); // @NOTE hacking browser detection so required provider options are availiable cy.window().then(($window) => { console.log('window !!', $window.location.href); ($window as any).chrome = {}; ($window as any).chrome.runtime = { sendMessage() { 'mock function'; }, }; }); mountFixtureWithProviders({ children: <ProviderSelection flagsConfig={defaultFlags} /> }); cyGetByTestId('provider--metaMask').click(); cy.get('@sendAnalyticsAsyncStub').should( 'have.been.calledWithMatch', analyticsUtilsModule.createButtonEvent(ButtonEventName.providerSelectionPressed), ); });

función mountFixtureWithProviders

 export const mountFixtureWithProviders = ({ children, mountInsideVisualMock = true, setErrorLog = () => ({}), renderErrorScreens, }: { children: ReactNode; mountInsideVisualMock?: boolean; setErrorLog?: SetErrorLog; renderErrorScreens?: boolean; }) => { const RouterMockedChildren = () => <MemoryRouter>{children}. </MemoryRouter>; const ProvidedChildren = () => renderErrorScreens ? ( <DemoAppToRenderErrorMessages> <RouterMockedChildren /> </DemoAppToRenderErrorMessages> ) : ( <LinkUiCoreContext.Provider value={{ setErrorLog, imageResizerServiceUrl: DEV_IMAGE_RESIZER_SERVICE_URL }}> <RouterMockedChildren /> </LinkUiCoreContext.Provider> ); return mount(mountInsideVisualMock ? linkPageVisualMock({ children: <ProvidedChildren /> }) : <ProvidedChildren />); };

Gracias.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Por lo general, solo puede hacer una visita antes de beforeEach() para obtener un comienzo limpio para cada prueba

 beforeEach(() => { cy.visit('/') })

También hay cy.go('back') que puede ejecutar al final de la primera prueba.

Pero tenga en cuenta que una falla en la prueba 1 fallará en la prueba 2 porque la navegación no sucederá; lo mismo se aplica a la adición en afterEach() .


En la window del corredor de prueba, pero puede acceder a la ventana de la aplicación con

 cy.window().then(win => console.log(win.location.href))

o la ubicación directamente con

 cy.location().then(loc => console.log(loc.href))

No use cy.log() para la depuración, use console.log() ya que cy.log() efectos secundarios que pueden proporcionarle información de depuración incorrecta.


(mountFixtureWithProviders({ children: <ProviderSelection flagsConfig={{}} /> }) parece una prueba de componente, así que sí, estoy de acuerdo en que debería darle un nuevo comienzo para cada prueba.

¿Puede agregar las dos pruebas y también mountFixtureWithProviders en la pregunta para dar una imagen completa, por favor?

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!