Запустить браузер через testcafe без теста - PullRequest
3 голосов
/ 23 апреля 2019

Я хочу использовать testcafe для запуска браузеров, доступных через внутренних конечных внешних поставщиков браузеров.Я не хочу никакой функциональности тестирования.Но я хочу иметь возможность использовать takeScreenshot, resizeWindow и т. Д.

Вот мой код.

const pool = require("./node_modules/testcafe/lib/browser/provider/pool.js");

pool.getProvider("chrome").then((provider) => {
    const plugin = provider.plugin;

    console.log("open")

    plugin.openBrowser("foo", "http://google.de", "chrome").then(() => {
        console.log("done");

    }).catch(console.warn);;

    console.log("early");

}).catch(console.warn);

Если я запускаю или отлаживаю файл с этим кодом, обещание открытого браузера будетникогда не решается.Консоль напечатает open и early, а затем программа закроется.

Если я скопирую и вставлю код в оболочку интерактивного узла, браузер запустится.(Я получаю исключение, что соединение равно нулю , но этот код никогда не запускается, если я запускаю файл.

Что я делаю не так?

ОБНОВЛЕНИЕ: Этокод, который использует async / await, но также не работает:

const pool = require("../node_modules/testcafe/lib/browser/provider/pool.js");

(async () => {
    const provider = await pool.getProvider("chrome");
    const plugin = provider.plugin;
    await plugin.openBrowser("foo", "http://google.de", "chrome");
    console.log("done");
})();

1 Ответ

3 голосов
/ 23 апреля 2019

Мы не рекомендуем использовать этот внутренний API, так как он может быть изменен в любое время без уведомления. Вместо этого вы можете использовать модуль testcafe-browser-tools .

Метод plugin.openBrowser является асинхронным. Итак, вам нужно дождаться результата выполнения метода. Пожалуйста, см. TestCafe runBrowser код для более подробной информации.

...