Jest-Puppeteer - ожидалось, что будет вызвано одно утверждение, но получено ноль вызовов утверждений. - PullRequest
0 голосов
/ 09 мая 2020

Этот скрипт выполняет вход на сайт. Это мой первый шутливый тест. В последней строке перед тестом в раскрывающемся списке ul. Затем мы переходим на новую страницу с URL-адресом https://uat2.onplanapp.com/# /

В качестве простого теста я пытаюсь проверить, действительно ли это URL-адрес новой страницы. Когда я смотрю в браузере, скрипт входит в систему и переходит на нужную страницу.

Получение ошибки показано ниже.

Код

/**
 * @name Onplan Login
 * @desc Logs in and test for correct page title
 */
const puppeteer = require('puppeteer');
const assert = require('assert');
let browser;
let page;
beforeAll(async () => {
    browser = await puppeteer.launch({
        headless: false,
        devtools: true
        //slowMo: 50
    });
    const page = await browser.newPage();
    await page.goto('https://uat2.onplanapp.com/#/sheet/139');
    await page.waitFor(500);//was 500
    await page.waitFor('#inputEmail');
    await page.type('#inputEmail', 'xxx@yyy');
    await page.type('#inputPassword', '1111');
    await page.click('button');//Login
    await page.waitForNavigation();
    await page.waitFor(100);//was 500
    // SELECT COMPANY ON NEXT PAGE
    await page.waitFor('#logn-screenv > form > div.row.logn-screenbody.pb-4.pt-3.px-2 > div:nth-child(2) > div > div > div.css-1hwfws3.custom-scrollbar__value-container > div.css-151xaom-placeholder.custom-scrollbar__placeholder');
    await page.click('#logn-screenv > form > div.row.logn-screenbody.pb-4.pt-3.px-2 > div:nth-child(2) > div > div > div.css-1hwfws3.custom-scrollbar__value-container > div.css-151xaom-placeholder.custom-scrollbar__placeholder');//Login

    // SELECT COMPANY 
    await page.waitFor(500);// was 1000

    // click dropdown to show list of companies
    await page.click('#react-select-2-option-2'); //Test company
    await page.waitFor(300);//was 1000

    // click list item to select company
    await page.click('button[class="btn btn-block mt-3"]');
    // now navigate to company page


})

test('url should be correct"', async () => {

    expect.assertions(1);
    const url = await page.url;
    await assert(url === 'https://uat2.onplanapp.com/#/');
});



afterAll(async () => {
    //await browser.close()
})

Сообщение об ошибке

onplan_jest@1.0.0 test F: \ Projects \ onplan_jest jest

FAIL ./login.test.js (6,165 с) × URL должен быть правильно "(2 мс)

● URL должен быть правильным"

Timeout - Async callback was not invoked within the 5000 ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000 ms timeout specified by jest.setTimeout.

  at mapper (node_modules/jest-jasmine2/build/queueRunner.js:29:45)

● URL должен быть правильным "

TypeError: Cannot read property 'url' of undefined

  43 | 
  44 |     expect.assertions(1);
> 45 |     const url = await page.url;
     |                            ^
  46 |     await assert(url === 'https://uat2.onplanapp.com/#/');
  47 | });
  48 | 

  at Object.<anonymous> (login.test.js:45:28)

● URL должен быть правильным"

expect.assertions(1)

Expected one assertion to be called but received zero assertion calls.

  42 | test('url should be correct"', async () => {
  43 | 
> 44 |     expect.assertions(1);
     |            ^
  45 |     const url = await page.url;
  46 |     await assert(url === 'https://uat2.onplanapp.com/#/');
  47 | });

  at Object.<anonymous> (login.test.js:44:12)

Наборы тестов: 1 не удалось, всего 1 Тесты: 1 не удалось, всего 1 Снимки: 0 всего Время: 6,316 с, примерно 7 с Выполнены все наборы тестов. Jest не завершился через одну секунду после завершения теста.

Обычно это означает, что в ваших тестах есть асинхронные операции, которые не были остановлены. Рассмотрите возможность запуска Jest с --detectOpenHandles, чтобы устранить эту проблему. Конец сообщения об ошибке

1 Ответ

0 голосов
/ 10 мая 2020

Мне удалось провести свой первый тест по настройке с помощью следующего кода. Большая часть проблемы заключалась в том, что у меня был код до всего, что мне нужно было перейти в тест. Вот код, который сработал.

 * @name Onplan Login
 * @desc Logs in and test for correct page title
 */
const puppeteer = require('puppeteer');
const assert = require('assert');
let browser;
beforeAll(async () => {
    browser = await puppeteer.launch({
        headless: false,
        devtools: false,
        slowMo: 50
    });

})

describe('url should be correct"', () => {
    test('url is correct', async () => {
        const page = await browser.newPage();
        await page.goto('https://uat2.onplanapp.com/#/sheet/139');
        await page.waitFor(500);//was 500
        await page.waitFor('#inputEmail');
        await page.type('#inputEmail', 'mayank@onplan.co');
        await page.type('#inputPassword', '123456');
        await page.click('button');//Login
        await page.waitForNavigation();
        await page.waitFor(100);//was 500
        // SELECT COMPANY ON NEXT PAGE
        await page.waitFor('#logn-screenv > form > div.row.logn-screenbody.pb-4.pt-3.px-2 > div:nth-child(2) > div > div > div.css-1hwfws3.custom-scrollbar__value-container > div.css-151xaom-placeholder.custom-scrollbar__placeholder');
        await page.click('#logn-screenv > form > div.row.logn-screenbody.pb-4.pt-3.px-2 > div:nth-child(2) > div > div > div.css-1hwfws3.custom-scrollbar__value-container > div.css-151xaom-placeholder.custom-scrollbar__placeholder');//Login

        // SELECT COMPANY 
        await page.waitFor(500);// was 1000

        // click dropdown to show list of companies
        await page.click('#react-select-2-option-2'); //Test company
        await page.waitFor(300);//was 1000
        await page.click('button[class="btn btn-block mt-3"]');
        //now we go to first page
        const url = await page.url();
        expect(url).toBe('https://uat2.onplanapp.com/#/');

    }, 20000);
});
...