использование переменных среды при запуске TestCafe из runner.class - PullRequest
0 голосов
/ 18 марта 2020

Я занимаюсь тестированием разных языков сайта с помощью Testcafe. Вместо того чтобы писать n тестов для каждого языка, мне нужен один тестовый файл, который требует (n когда-либо меняющихся) языковых файлов.

Я много читал в том же духе, что это невозможно, поэтому моя идея заключалась в том, чтобы упаковать нужный язык в переменную среды и преобразовать его в путь к нужному объекту языка, примерно так:

// test.spec.js
//
const lang = require(path(__baseDir,"ressources","languages",process.env.LANG))

так как мне нужно использовать класс бегуна, я хотел «внедрить» переменную env.variable с помощью метода «startApp ()», например так:

//tcRunner.js
//
const createTestCafe = require("testcafe");

const launch = async function (tests, browser) {
  const testcafe = await createTestCafe("localhost", 1337, 1338);
  const runner = await testcafe.createRunner();

  runner
    .startApp("set LANG=en-GB")
    .src("test.spec.js")
    .browsers(browser)
    .reporter("json", "reports/report.json")
    .run()
    .then(failed => {
      console.log(failed + " Tests failed");
      testcafe.close();
    });
};

Как подсказывает моя публикация это не работает, и я надеялся, что вы можете указать мне направление (даже альтернативное), чтобы избежать написания сотен тестов для каждого языка.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 20 марта 2020

Вам нужно установить переменную окружения 'LANG' перед запуском тестов.

//tcRunner.js
//
const createTestCafe = require("testcafe");

const launch = async function (tests, browser) {
  const testcafe = await createTestCafe("localhost", 1337, 1338);
  const runner = await testcafe.createRunner();

  process.env.LANG = 'en';

  runner
    .src("test.spec.js")
    .browsers(browser)
    .reporter("json", "reports/report.json")
    .run()
    .then(failed => {
      console.log(failed + " Tests failed");
      testcafe.close();
    });
};
1 голос
/ 25 марта 2020

Помимо очаровательного рабочего ответа выше, я нашел другое решение с помощью

//test.spec.js const lang = require("../lang.js")

и в функции бегуна просто

fs.copyFileSync(path.join(__dirname, "lang", lang + ".lang.js"), "lang.js")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...