Как повторно использовать тесты кукловода - PullRequest
0 голосов
/ 08 июня 2018

В настоящее время я работаю с Puppeteer и Jest для сквозного тестирования, чтобы мои тесты работали, мне всегда нужно запускать тесты входа в систему, но я не знаю и не смог выяснить, какэкспортировать свои тесты, чтобы я мог их повторно использовать.

В заключение: я ищу способ повторно использовать все мои тесты внутри описания, экспортируя их в другой файл и используя их в beforeAll вновые файлы.

Полный набор тестов для входа ниже:

describe("homepage and login tests", homepageTests = () => {

    test("front page loads", async (done) => {
        await thePage.goto('http://localhost:3000');
        expect(thePage).toBeDefined();
        done();
    });

    test("Login button is present", async (done) => {
        theLoginButton = await thePage.$("#login-button");
        expect(theLoginButton).toBeDefined();
        done();
    })

    test("Login works", async (done) => {
        //the following code runs inside the popup
        await theBrowser.on('targetcreated', async (target) => {
            const thePopupPage = await target.page();
            if (thePopupPage === null) return;

            //get the input fields
            const usernameField = await thePopupPage.waitFor('input[name=login]');
            const passwordField = await thePopupPage.waitFor("input[name=password]");
            const submitButton = await thePopupPage.waitFor('input[name=commit]');

            //validate input fields
            expect(usernameField).not.toBeNull();
            expect(passwordField).not.toBeNull();
            expect(submitButton).not.toBeNull();

            //typing and clicking
            await thePopupPage.waitFor(300)
            await usernameField.type("USER");
            await passwordField.type("PASSWORD");
            await submitButton.click();
            done();
        })

        try {
            //wait for login button on homepage
            theLoginButton = await thePage.waitFor('#login-button');
            expect(theLoginButton).toBeDefined();

            //click on login
            await thePage.waitFor(200);
            await theLoginButton.click();

        } catch (e) { console.log(e) }
    })

    test("Arrive on new page after login", async () => {
        //resultsButton is only shown for logged in users.
        const resultsButton = await thePage.$("#resultsButton");
        expect(resultsButton).toBeDefined();
    })

1 Ответ

0 голосов
/ 08 августа 2018

Создать отдельное имя файла test.js

// test.js

export async function fn1(args){
   // your commands
}

// file.test.js

import {fn1} from 'test.js'

describe('test 1 ', () => {
test("test", async () => {

      try {
        await fn1(args);          
      } catch (err) {
        console.log('There are some unexpected errors: ' + err);
      }

  },5000);
});

У меня естьта же проблема, и вышеописанный метод сработает для вас.

...