gpt4 book ai didi

angular - WebdriverIO 和 Angular,在导入类的 typescript 中编写 e2e 测试(不能在模块外使用 import 语句)

转载 作者:行者123 更新时间:2023-12-04 17:23:09 25 4
gpt4 key购买 nike

我正在尝试让一组 wdio 的 e2e 测试工作。
一些测试使用一些用 typescript 编写的实用程序类。
编译测试时,它会遇到此错误:

Spec file(s): D:\TEMP\xx\angular-wdio6-builder-demo\e2e\test\specs\basic.spec.ts                                                                               
Error: D:\TEMP\xx\angular-wdio6-builder-demo\e2e\test\specs\basic.spec.ts:1
import {Util} from '../util/util.spec';
^^^^^^

SyntaxError: Cannot use import statement outside a module
at wrapSafe (internal/modules/cjs/loader.js:1054:16)
at Module._compile (internal/modules/cjs/loader.js:1102:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
at Module.load (internal/modules/cjs/loader.js:986:32)
at Function.Module._load (internal/modules/cjs/loader.js:879:14)
at Module.require (internal/modules/cjs/loader.js:1026:19)
at require (internal/modules/cjs/helpers.js:72:18)
at D:\TEMP\xx\angular-wdio6-builder-demo\node_modules\@wdio\jasmine-framework\node_modules\jasmine\lib\jasmine.js:89:5
at Array.forEach (<anonymous>)
at Jasmine.loadSpecs (D:\TEMP\xx\angular-wdio6-builder-demo\node_modules\@wdio\jasmine-framework\node_modules\jasmine\lib\jasmine.js:88:18)
[0-0] RUNNING in chrome - D:\TEMP\xx\angular-wdio6-builder-demo\e2e\test\specs\basic.spec.ts
以上输出来自 WebdriverIO Boilerplate Projects 之一的克隆.
我所做的唯一更改(除了 chromedriver 更新)是将本示例中的测试更改为 typescript 并使用实用程序类。
我已经尝试了我能找到的所有选项,但没有一个能解决这个问题,只是运行这个简单的测试。尤其是,似乎没有办法选择任何 babel 配置。
来源位于 https://github.com/rgansevles/angular-wdio6-builder-demo (从 https://github.com/migalons/angular-wdio6-builder-demo 克隆)
要重现,请克隆我的 repo 并运行:
npm install
npm run e2e
有没有人知道如何让这个示例与导入语句一起工作?
提前致谢,

顺便说一句,这是它在 e2e/test/specs/basic.spec.ts 上失败的测试文件:
import {Util} from '../util/util.spec';

const util = new Util();

describe('webdriver.io page', () => {
it('should have the right title', () => {
browser.url('');
const title = browser.getTitle();
expect(title).toEqual(util.browserTitle);
});

it('should say app is running', () => {
browser.url('');
const message = $('body > app-root > div.content > div.card.highlight-card.card-small > span').getText();
expect(message).toEqual('angular-wdio6-builder-demo app is running!');
});
});

最佳答案

我懂了。有几件事要做:

  • 创建 tsconfig.json在 e2e 文件夹中。这个文件必须扩展基本的 tsconfig.json 并且必须覆盖:
  • "module": "commonjs"
  • "types": ["node", "@wdio/sync", "@wdio/jasmine-framework"]

  • 修改 wdio.conf.js编译 typescript
  • 使用 ts而不是 js在规范模式
  • 添加 requires: ['ts-node/register']jasmineNodeOpts

  • package.json您必须向脚本添加环境 e2e
  • "e2e": "TS_NODE_PROJECT=e2e/tsconfig.json ng e2e"


  • 我已经 fork 了相同的 repo 并在此处进行了更改: https://github.com/Michel73/angular-wdio6-builder-demo
    剩下的一件事:在我的 VSCode 中 basic.spec.ts显示编译错误,因为 VSCode 似乎总是采用基本的 tsconfig.js .因此我安装了 TypeScript Auto Compiler - VSCode 的扩展。

    关于angular - WebdriverIO 和 Angular,在导入类的 typescript 中编写 e2e 测试(不能在模块外使用 import 语句),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64971612/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com