leen M
leen M

Reputation: 615

The following error originated from your application code, not from Cypress

I tried to test this simple code:

type Url = string
it('loads examples', () => {
    const url: Url = 'https://www.ebay.com/'
    cy.visit(url)
    cy.get('input[type="text"]').type('book')
    cy.get('#gh-btn').click();
})

then I faced this error:

enter image description here

how can I solve it

Upvotes: 25

Views: 72271

Answers (4)

410Gone
410Gone

Reputation: 41

Actually, if you click in the Learn more link that comes with the error, you'll get everything you need.

https://docs.cypress.io/guides/references/error-messages#Uncaught-exceptions-from-your-application


Quoting others:

won't this answer ignore all errors thrown by the application? The accepted answer will cause Cypress to ignore all uncaught exceptions

That is true.

Also, @DJSDev did not work for me when using Cypress v10.0.3.

The aforementioned link provides a working alternative:

it('is doing something very important', (done) => {
  // this event will automatically be unbound when this
  // test ends because it's attached to 'cy'
  cy.on('uncaught:exception', (err, runnable) => {
    expect(err.message).to.include('something about the error')

    // using mocha's async done callback to finish
    // this test so we prove that an uncaught exception
    // was thrown
    done()

    // return false to prevent the error from
    // failing this test
    return false
  })

  // assume this causes an error
  cy.get('button').click()
})

Upvotes: 3

DJSDev
DJSDev

Reputation: 983

The accepted answer will cause Cypress to ignore all uncaught exceptions in the application. Generally, when these come up it means you found a bug in your app and should fix it.

Binding to the global Cypress object causes the event to stay bound for your entire test run. Usually, this isn't what you want.

If you actually need to ignore the exceptions though, you should be binding the event on the cy object so it's only persisted for the single test it's used in.

it('my test', () => {
  cy.once('uncaught:exception', () => false);
  
  // action that causes exception
  cy.get('body').click();
});

Upvotes: 16

leen M
leen M

Reputation: 615

Try adding this in support/index.js:

import './commands'
Cypress.on('uncaught:exception', (err, runnable) => {
  // returning false here prevents Cypress from failing the test
  return false
})

This should avoid the uncaught:exception in the click() method.

Upvotes: 32

Muhammad Usman
Muhammad Usman

Reputation: 1

I got Same Issue like this Cypress Error

The following error originated from your application code, not from Cypress. > Cannot read properties of null (reading 'textContent')
When Cypress detects uncaught errors originating from your application it will automatically fail the current test.
This behavior is configurable, and you can choose to turn this off by listening to the uncaught:exception event.Learn more

No Need to worry about this.

Just paste this code to your index.js file :)

import './commands'
   Cypress.on('uncaught:exception', (err, runnable) => {
   // returning false here prevents Cypress from
 // failing the test
   return false
   })

Upvotes: 0

Related Questions