Skip to content

Commit

Permalink
chore: comment out skipped tests where tests always hangs + add logs (#…
Browse files Browse the repository at this point in the history
…28632)

* comment out skipped tests where tests always hangs + add logs

* Increase timeout for page to load

* Always wait for spinner to not exist

* Pass option args in correct place

* Add log to expected task error output since that was added as a task
  • Loading branch information
jennifer-shehane committed Jan 12, 2024
1 parent 6cbd572 commit b19c1cd
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 40 deletions.
9 changes: 9 additions & 0 deletions packages/driver/cypress.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,15 @@ export default defineConfig({
experimentalOriginDependencies: true,
experimentalModifyObstructiveThirdPartyCode: true,
setupNodeEvents: (on, config) => {
on('task', {
log (message) {
// eslint-disable-next-line no-console
console.log(message)

return null
},
})

return require('./cypress/plugins')(on, config)
},
baseUrl: 'http://localhost:3500',
Expand Down
2 changes: 1 addition & 1 deletion packages/driver/cypress/e2e/commands/task.cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ describe('src/cy/commands/task', () => {
expect(lastLog.get('error')).to.eq(err)
expect(lastLog.get('state')).to.eq('failed')

expect(err.message).to.eq(`\`cy.task('bar')\` failed with the following error:\n\nThe task 'bar' was not handled in the setupNodeEvents method. The following tasks are registered: return:arg, return:foo, return:bar, return:baz, cypress:env, arg:is:undefined, wait, create:long:file, check:screenshot:size\n\nFix this in your setupNodeEvents method here:\n${Cypress.config('configFile')}`)
expect(err.message).to.eq(`\`cy.task('bar')\` failed with the following error:\n\nThe task 'bar' was not handled in the setupNodeEvents method. The following tasks are registered: log, return:arg, return:foo, return:bar, return:baz, cypress:env, arg:is:undefined, wait, create:long:file, check:screenshot:size\n\nFix this in your setupNodeEvents method here:\n${Cypress.config('configFile')}`)

done()
})
Expand Down
96 changes: 59 additions & 37 deletions packages/driver/cypress/e2e/e2e/origin/snapshots.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,63 +66,72 @@ describe('cy.origin - snapshots', { browser: '!webkit' }, () => {
logs.set(attrs.id, log)
})

cy.task('log', 'beforeEach before visit')

cy.fixture('foo.bar.baz.json').then((fooBarBaz) => {
cy.task('log', 'beforeEach before intercept')

cy.intercept('GET', '/foo.bar.baz.json', { body: fooBarBaz }).as('fooBarBaz')
})

cy.task('log', 'beforeEach before visit')

cy.visit('/fixtures/primary-origin.html')
cy.task('log', 'beforeEach before get')

cy.get('a[data-cy="xhr-fetch-requests-onload"]').click()
cy.task('log', 'beforeEach after get')
})

// TODO: fix failing test: https://github.com/cypress-io/cypress/issues/23840
it.skip('verifies XHR requests made while a secondary origin is active eventually update with snapshots of the secondary origin', () => {
cy.origin('http://www.foobar.com:3500', () => {
// need to set isInteractive in the spec bridge in order to take xhr snapshots in run mode, similar to how isInteractive is set within support/defaults.js
// @ts-ignore
Cypress.config('isInteractive', true)
cy.visit('http://www.foobar.com:3500/fixtures/xhr-fetch-requests.html')
cy.get(`[data-cy="assertion-header"]`).should('exist')
cy.wait('@fooBarBaz')
})
// it.skip('verifies XHR requests made while a secondary origin is active eventually update with snapshots of the secondary origin', () => {
// cy.origin('http://www.foobar.com:3500', () => {
// // need to set isInteractive in the spec bridge in order to take xhr snapshots in run mode, similar to how isInteractive is set within support/defaults.js
// // @ts-ignore
// Cypress.config('isInteractive', true)
// cy.visit('http://www.foobar.com:3500/fixtures/xhr-fetch-requests.html')
// cy.get(`[data-cy="assertion-header"]`).should('exist')
// cy.wait('@fooBarBaz')
// })

cy.shouldWithTimeout(() => {
const xhrLogFromSecondaryOrigin = findLog(logs, 'xhr', 'http://localhost:3500/foo.bar.baz.json')?.get()
// cy.shouldWithTimeout(() => {
// const xhrLogFromSecondaryOrigin = findLog(logs, 'xhr', 'http://localhost:3500/foo.bar.baz.json')?.get()

expect(xhrLogFromSecondaryOrigin).to.exist
// expect(xhrLogFromSecondaryOrigin).to.exist

const snapshots = xhrLogFromSecondaryOrigin.snapshots.map((snapshot) => snapshot.body.get()[0])
// const snapshots = xhrLogFromSecondaryOrigin.snapshots.map((snapshot) => snapshot.body.get()[0])

expect(snapshots.length).to.equal(2)
// expect(snapshots.length).to.equal(2)

// TODO: Since we have two events, one of them does not have a request snapshot
// // TODO: Since we have two events, one of them does not have a request snapshot

expect(snapshots[1].querySelector(`[data-cy="assertion-header"]`)).to.have.property('innerText').that.equals('Making XHR and Fetch Requests behind the scenes if fireOnload is true!')
})
})
// expect(snapshots[1].querySelector(`[data-cy="assertion-header"]`)).to.have.property('innerText').that.equals('Making XHR and Fetch Requests behind the scenes if fireOnload is true!')
// })
// })

// TODO: fix failing test: https://github.com/cypress-io/cypress/issues/23840
it.skip('verifies fetch requests made while a secondary origin is active eventually update with snapshots of the secondary origin', () => {
cy.origin('http://www.foobar.com:3500', () => {
// need to set isInteractive in the spec bridge in order to take xhr snapshots in run mode, similar to how isInteractive is set within support/defaults.js
// @ts-ignore
Cypress.config('isInteractive', true)
cy.visit('http://www.foobar.com:3500/fixtures/xhr-fetch-requests.html')
cy.get(`[data-cy="assertion-header"]`).should('exist')
cy.wait('@fooBarBaz')
})
// // TODO: fix failing test: https://github.com/cypress-io/cypress/issues/23840
// it.skip('verifies fetch requests made while a secondary origin is active eventually update with snapshots of the secondary origin', () => {
// cy.origin('http://www.foobar.com:3500', () => {
// // need to set isInteractive in the spec bridge in order to take xhr snapshots in run mode, similar to how isInteractive is set within support/defaults.js
// // @ts-ignore
// Cypress.config('isInteractive', true)
// cy.visit('http://www.foobar.com:3500/fixtures/xhr-fetch-requests.html')
// cy.get(`[data-cy="assertion-header"]`).should('exist')
// cy.wait('@fooBarBaz')
// })

cy.shouldWithTimeout(() => {
const xhrLogFromSecondaryOrigin = findLog(logs, 'fetch', 'http://localhost:3500/foo.bar.baz.json')?.get()
// cy.shouldWithTimeout(() => {
// const xhrLogFromSecondaryOrigin = findLog(logs, 'fetch', 'http://localhost:3500/foo.bar.baz.json')?.get()

expect(xhrLogFromSecondaryOrigin).to.exist
// expect(xhrLogFromSecondaryOrigin).to.exist

const snapshots = xhrLogFromSecondaryOrigin.snapshots.map((snapshot) => snapshot.body.get()[0])
// const snapshots = xhrLogFromSecondaryOrigin.snapshots.map((snapshot) => snapshot.body.get()[0])

snapshots.forEach((snapshot) => {
expect(snapshot.querySelector(`[data-cy="assertion-header"]`)).to.have.property('innerText').that.equals('Making XHR and Fetch Requests behind the scenes if fireOnload is true!')
})
})
})
// snapshots.forEach((snapshot) => {
// expect(snapshot.querySelector(`[data-cy="assertion-header"]`)).to.have.property('innerText').that.equals('Making XHR and Fetch Requests behind the scenes if fireOnload is true!')
// })
// })
// })

it('Does not take snapshots of XHR/fetch requests from secondary origin if the wrong origin is visited / origin mismatch, but instead the primary origin (existing behavior)', {
defaultCommandTimeout: 50,
Expand All @@ -142,16 +151,29 @@ describe('cy.origin - snapshots', { browser: '!webkit' }, () => {
done()
})

cy.task('log', 'test before visit')

cy.visit('http://www.foobar.com:3500/fixtures/xhr-fetch-requests.html')

cy.task('log', 'test after visit')

cy.origin('http://www.barbaz.com:3500', () => {
// need to set isInteractive in the spec bridge in order to take xhr snapshots in run mode, similar to how isInteractive is set within support/defaults.js
// @ts-ignore
Cypress.config('isInteractive', true)

cy.task('log', 'test before get')

cy.get(`[data-cy="assertion-header"]`).should('exist')

cy.task('log', 'test after get')

cy.wait('@fooBarBaz')

cy.task('log', 'test after wait')
})

cy.task('log', 'test after origin')
})
})
})
4 changes: 3 additions & 1 deletion packages/frontend-shared/cypress/support/e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,9 @@ function visitLaunchpad () {
return logInternal(`visitLaunchpad ${Cypress.env('e2e_launchpadPort')}`, () => {
return cy.visit(`/__launchpad/index.html`, { log: false }).then((val) => {
return cy.get('[data-e2e]', { timeout: 10000, log: false }).then(() => {
return val
return cy.get('.spinner', { timeout: 10000, log: false }).should('not.exist').then(() => {
return val
})
})
})
})
Expand Down
2 changes: 1 addition & 1 deletion packages/launchpad/cypress/e2e/project-setup.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -615,7 +615,7 @@ describe('Launchpad: Setup Project', () => {

cy.visitLaunchpad()

cy.get('[data-cy-testingtype="component"]').click()
cy.get('[data-cy-testingtype="component"]', { timeout: 10000 }).click()
cy.get('[data-testid="select-framework"]').click()
cy.findByText('Vue.js 3').click()
cy.contains('button', 'Pick a bundler').click()
Expand Down

5 comments on commit b19c1cd

@cypress-bot
Copy link
Contributor

@cypress-bot cypress-bot bot commented on b19c1cd Jan 12, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Circle has built the linux x64 version of the Test Runner.

Learn more about this pre-release build at https://on.cypress.io/advanced-installation#Install-pre-release-version

Run this command to install the pre-release locally:

npm install https://cdn.cypress.io/beta/npm/13.6.3/linux-x64/develop-b19c1cd21ba5281c60a2fda7a6248cc366e44b34/cypress.tgz

@cypress-bot
Copy link
Contributor

@cypress-bot cypress-bot bot commented on b19c1cd Jan 12, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Circle has built the linux arm64 version of the Test Runner.

Learn more about this pre-release build at https://on.cypress.io/advanced-installation#Install-pre-release-version

Run this command to install the pre-release locally:

npm install https://cdn.cypress.io/beta/npm/13.6.3/linux-arm64/develop-b19c1cd21ba5281c60a2fda7a6248cc366e44b34/cypress.tgz

@cypress-bot
Copy link
Contributor

@cypress-bot cypress-bot bot commented on b19c1cd Jan 12, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Circle has built the darwin x64 version of the Test Runner.

Learn more about this pre-release build at https://on.cypress.io/advanced-installation#Install-pre-release-version

Run this command to install the pre-release locally:

npm install https://cdn.cypress.io/beta/npm/13.6.3/darwin-x64/develop-b19c1cd21ba5281c60a2fda7a6248cc366e44b34/cypress.tgz

@cypress-bot
Copy link
Contributor

@cypress-bot cypress-bot bot commented on b19c1cd Jan 12, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Circle has built the win32 x64 version of the Test Runner.

Learn more about this pre-release build at https://on.cypress.io/advanced-installation#Install-pre-release-version

Run this command to install the pre-release locally:

npm install https://cdn.cypress.io/beta/npm/13.6.3/win32-x64/develop-b19c1cd21ba5281c60a2fda7a6248cc366e44b34/cypress.tgz

@cypress-bot
Copy link
Contributor

@cypress-bot cypress-bot bot commented on b19c1cd Jan 12, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Circle has built the darwin arm64 version of the Test Runner.

Learn more about this pre-release build at https://on.cypress.io/advanced-installation#Install-pre-release-version

Run this command to install the pre-release locally:

npm install https://cdn.cypress.io/beta/npm/13.6.3/darwin-arm64/develop-b19c1cd21ba5281c60a2fda7a6248cc366e44b34/cypress.tgz

Please sign in to comment.