Capítulo 86 de 456
Setup do Cypress no Next.js para E2E Testing e Component Testing, incluindo quickstart via create-next-app e configuração manual de cada modo.
cy.visit): simula um usuário navegando a aplicação; requer o servidor Next.js rodando — recomendado rodar contra o build de produção (next build && next start) para se assemelhar ao comportamento real.cy.mount): monta um componente específico sem precisar bundlar a aplicação inteira nem subir servidor; requer selecionar framework "Next.js" e bundler: 'webpack' no cypress.config.async — recomenda-se E2E testing para esses casos.start-server-and-test: pacote auxiliar para rodar o servidor Next.js junto com Cypress num único comando de CI.cypress run: modo headless, adequado para CI (em vez de cypress open, interativo).describe('Navigation', () => {
it('should navigate to the about page', () => {
cy.visit('http://localhost:3000/')
cy.get('a[href*="about"]').click()
cy.url().should('include', '/about')
cy.get('h1').contains('About')
})
})
import { defineConfig } from 'cypress'
export default defineConfig({
component: {
devServer: { framework: 'next', bundler: 'webpack' },
},
})
import Page from '../../app/page'
describe('<Page />', () => {
it('should render and display expected content', () => {
cy.mount(<Page />)
cy.get('h1').contains('Home')
cy.get('a[href="/about"]').should('be.visible')
})
})
cy.mount) sem precisar de servidor, verificando presença de link em vez de segui-lo (isso é papel do E2E).async: não suportado pelo Cypress; use E2E nesse caso.<Image />) via Component Testing: pode não funcionar out-of-the-box, já que não há servidor Next.js disponível nesse modo.moduleResolution: "bundler" — atualize se enfrentar esse problema.next start) para refletir comportamento real, não contra next dev.baseUrl no cypress.config.js para simplificar cy.visit("/") em vez da URL completa.cypress run (headless) combinado com start-server-and-test.