【问题标题】:How can I run a protractor config file (.ts) with ts-node?如何使用 ts-node 运行量角器配置文件 (.ts)?
【发布时间】:2020-02-13 17:24:54
【问题描述】:

我曾经在运行之前编译用 TS 编写的 e2e 量角器测试,但现在我想出了如何在运行时编译 ts 文件——ts-node 似乎是一个很好的工具。正如许多文章所说,我在量角器配置文件中注册了 ts-node,这样我就可以像运行 .ts 文件一样运行我的测试规范,并且它们将在 tun-time 中编译。像这样的:

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

那太好了。但是我遇到的所有案例都包含带有 .js 配置文件的示例 --> 您不需要编译配置文件,但所有规范都可以在 TS 中,并且将使用 ts-node 进行编译。 我希望拥有的所有文件都在 TypeScript 中:配置和规范。如何运行我的量角器测试,提供 config.ts 并在其中包含 specs.ts? 像量角器ts-node config.ts 这样的东西会很棒。

【问题讨论】:

  • 我能问一下你为什么要在 TS 中配置 Protractor 吗?我认为 Protractor 配置文件通常不需要使用您项目中的任何其他代码(或者至少我还不需要?),如果您只想让编辑器的语言服务获取输入信息,您可以在你的(JS)配置声明中使用/** @type {import("protractor").Config} */

标签: typescript protractor automated-tests e2e-testing ts-node


【解决方案1】:

只需创建另一个具有以下内容的 .js 文件

launcher.js

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

然后运行量角器并将启动器作为配置文件传递:

protractor launcher.js

【讨论】:

    【解决方案2】:

    根据 Madhan 的回答和Can I access parameters in my protractor configuration file? 中的问题,我的解决方案是一个可以启动通过命令行传递的任何 TS 配置文件的单个启动器 JS 文件:--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; 
    

    【讨论】:

      【解决方案3】:

      在您的onPrepare()config.js 中添加以下代码

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

      希望对你有帮助

      【讨论】:

      • 我的项目中没有任何 config.js,我的所有配置都在 typescript 中,并希望保持这种状态。我在 .ts 中有许多依赖项,例如帮助程序类等,所以我不想考虑在 JavaScript 中转移所有配置
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-10
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 2022-11-04
      • 2020-11-30
      • 2022-07-23
      相关资源
      最近更新 更多