Мокко жалуется на тайм-аут с кукловодом - PullRequest
0 голосов
/ 09 апреля 2020

Вот простая версия моего теста:

const puppeteer = require('puppeteer')
const { expect } = require('chai')

const options = {
    timeout: 15000
}

let browser, page;

// setup
before(async () => {
    browser = await puppeteer.launch(options)
    page = await browser.newPage()
})

// teardown
after(async () => {
    await page.close()
    await browser.close()
})

// utility functions
const withText = (text, element = '*') => `//${element}[contains(., '${text}')]`

describe('tests', () => {
    it('login', async () => {
        let user = 'foobar'
        let pw = 'password1'
        await page.goto('http://localhost:3000', { waitUntil: 'networkidle0' })
        await page.waitForXPath(withText('Sign In'))

        await page.type('#user', user, { delay: 50 })
        await page.type('#password', pw, { delay: 50 })
        await page.screenshot({ path: 'screenshot.png' })
    })
})

Когда я запускаю приведенный выше код с помощью mocha --timeout 15000 test.js (пока нет реального теста, просто пытаюсь проверить, заполнена ли форма), тест входа в систему выше выдает следующую ошибку:

Error: Timeout of 15000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

Afaik, mocha требуется только done() вызов, если тест НЕ является асинхронным c (другой поток подтверждает это: Правильный способ использования done () во время тестирования asyc / ждут с мокко ). Но даже с готовым, вышеупомянутый тест выдает ошибку тайм-аута. При тестировании с headless: false даже функции настройки и демонтажа выдают одинаковую ошибку. Что я делаю не так?

РЕДАКТИРОВАТЬ: Исправлено, проблема заключалась в том, что мой селектор waitForXPath истекал из-за того, что наш браузер совместимости браузера отмечал кукловода и выдавал ошибку вместо Форма входа.

...