Global in Jest Puppeteer пользовательские тестовые среды теряют контекст в тесте - PullRequest
0 голосов
/ 08 июня 2019

Я пишу модуль npm для уменьшения кода котла в моем тестовом проекте, и этот модуль будет добавлен как зависимость dev в этом тестовом проекте.Я использую наследование прототипов для расширения существующего класса (Page) библиотеки кукловодов в этом модуле npm.

Когда я создаю глобальный браузер в пользовательской тестовой среде и использую его для создания экземпляра страницы в тесте.Класс Page теряет ссылку на все свойства, которые я добавил к нему, используя прототип наследования.И выдает ошибку page.sendText is not a function

Но когда я создаю экземпляр браузера в тесте.Я могу использовать свойства, которые я добавил в класс Page.

Создание global.browser в пользовательской тестовой среде.Создание экземпляра браузера в тесте.

GLOBALSETUP в модуле npm

const browser = await puppeteer.launch(await puppeteer.launch({some config});

ИСПЫТАТЕЛЬНАЯ СРЕДА в модуле npm:

this.global __BROWSER__ = await puppeteer.connect({
        browserWSEndpoint: wsEndpoint,
});

Расширенный класс PAGE в модуле npm:

const Page = require('puppeteer/lib/Page').Page;

Page.prototype.sendText = async (selector, text) => {
    let element = await this.waitForSelector(selector, {visible : true});
    await element.type(text);
}

Тест в тестовом проекте после локальной установки модуля npm:

describe('awesome test', () => {
    it('something will be ok', async () => {
      const context = global.__BROWSER__.defaultBrowserContext();
      page = await context.newPage(); 
      await page.goto('https://google.com/')
      await page.sendText('#search', "puppeteer")
      await page.screenshot({path: 'google.png', fullPage: true})
    })
});

Ошибка -> page.sendText - это не функция, которую я ожидал, что sendText будет работать.

...