Jamie Crawford
Jamie Crawford

Reputation: 11

Detox - How to get a previous spec to run before a new spec runs to avoid duplicate test steps?

So I've wrote a test that logs in a user:

describe('Login', () => {

beforeEach(async () => {
    await device.reloadReactNative()
  })

  it('Should grant access to a user with valid credentials', async () => {
    test code
  })
})

And now I'm writing a new spec to log out a user, so instead of writing the same test code again, I want the login spec to run within the log out spec. I would imagine it would look something like:

describe('Log Out', () => {

beforeEach(async () => {
    await device.reloadReactNative()
    it ('Should grant access to a user with valid credentials')
  })

  it('A User Logs Out', async () => {
    test code
  })

How do I get Detox to run the first login test before continuing with the new steps?

The beforeEach it ('Should grant access to a user with valid credentials') doesn't work unfortunately, so I'm missing something in the syntax.

Upvotes: 1

Views: 841

Answers (2)

Dror Biran
Dror Biran

Reputation: 217

Best practice is to use Drivers in your tests. You can check out these slides: http://slides.com/shlomitoussiacohen/testing-react-components#/7

Upvotes: -1

Rotemmiz
Rotemmiz

Reputation: 7971

This has no relation to Detox, this describe/it API is related to the test runner you are using. Anyway, use functions:

describe('Login', () => {
  beforeEach(async () => {
    await device.reloadReactNative();
    await grantAccessToUserWithValidCredentials();
  });

  it('A User Logs Out', async () => {
    // here the app is ready for you specific log out use case 
  });

  async function grantAccessToUserWithValidCredentials() {
    //grant it
  }
});

Upvotes: 2

Related Questions