Как мне запустить конфигурационный файл транспортира (.ts) с помощью ts-node? - PullRequest
2 голосов
/ 13 февраля 2020

Раньше я собирал тесты транспортировщика e2e, написанные в TS перед запуском, но теперь я понял, как компилировать ts-файлы во время выполнения - ts-node оказался отличным инструментом для этого. Как написано во многих статьях, я зарегистрировал ts-node в конфигурационном файле Protractor, чтобы я мог запускать свои тестовые спецификации, как если бы они были .ts-файлами, и они будут скомпилированы во время настройки. Примерно так:

beforeLaunch: () => {
        require('ts-node').register({
            compilerOptions: {
                module: 'commonjs'
            },
            disableWarnings: true,
            fast: true
          });
    },

Отлично. Но все случаи, которые я встречал, включали примеры с. js файлами конфигурации -> вам не нужно компилировать файлы конфигурации, но все спецификации могут быть в TS и будут скомпилированы с помощью ts-node. sh: все мои файлы в TypeScript: и конфиги, и спецификации. Как я могу запустить свои тесты транспортира, давая config.ts и имея specs.ts там? Что-то вроде транспортира ts-node config.ts было бы просто потрясающе.

Ответы [ 3 ]

0 голосов
/ 17 февраля 2020

Добавьте приведенный ниже код в onPrepare() из config.js

  onPrepare() {
    /* Compile TS files */
    require('ts-node').register({
      project: './tsconfig.json'
    });

Надеюсь, это поможет вам

0 голосов
/ 03 апреля 2020

Основываясь на ответе Мадхана и вопросе в Могу ли я получить доступ к параметрам в моем файле конфигурации транспортира? , мое решение - это единственный файл запуска JS, который может запустить любой файл конфигурации TS, переданный через командную строку: --params.tsconfigpath=myfile.ts.

var getTsConfigPath = function() {
  for (var i = 3; i < process.argv.length; i++) {
    var match = process.argv[i].match(/^--params\.([^=]+)=(.*)$/);
    if (match && match[1] === "tsconfigpath") 
      return match[2];
  }
  return "protractor.conf.ts";
};

require("ts-node").register({
    project:  require("path").join(__dirname, "./tsconfig.json")
  });

tscconfigpath = require("path").join(__dirname, getTsConfigPath());
console.info("Starting protractor with TS config file '" + tscconfigpath + "'...");

module.exports.config = require(tscconfigpath).config; 
0 голосов
/ 15 февраля 2020

Просто создайте еще один. js файл, который будет иметь следующий

модуль запуска. js

        require('ts-node').register({
            compilerOptions: {
                module: 'commonjs'
            },
            disableWarnings: true,
            fast: true
        });
        module.export.config = require('./protractor.conf.ts').config;   

Затем запустите транспортир и передайте модуль запуска как файл конфигурации:

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