Запуск браузера через testcafe без теста

#cross-browser #automated-tests #e2e-testing #web-testing #testcafe

#кросс-браузерный #автоматизированные тесты #e2e-тестирование #веб-тестирование #тестовое кафе #testcafe

Вопрос:

Я хочу использовать 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:

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

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

Комментарии:

1. Могу ли я запустить любой браузер, доступный у сторонних поставщиков, через testcafe-browser-tools? Это требование.

2. Вы написали: «Метод plugin.openBrowser является асинхронным». Да. Вместо этого я просто использую обещание, возвращаемое функцией async. Я подумал, что это может быть проще понять, чем немедленно выполняемая асинхронная функция. (Я попробовал это первым)