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



我正在尝试让一组e2e测试运行。有些测试使用了一些用typescript编写的实用程序类。

当测试被编译时,它陷入了这个错误:

Spec file(s): D:TEMPxxangular-wdio6-builder-demoe2etestspecsbasic.spec.ts                                                                               
Error:  D:TEMPxxangular-wdio6-builder-demoe2etestspecsbasic.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:TEMPxxangular-wdio6-builder-demonode_modules@wdiojasmine-frameworknode_modulesjasminelibjasmine.js:89:5                                     
at Array.forEach (<anonymous>)                                                                                                                             
at Jasmine.loadSpecs (D:TEMPxxangular-wdio6-builder-demonode_modules@wdiojasmine-frameworknode_modulesjasminelibjasmine.js:88:18)                
[0-0] RUNNING in chrome - D:TEMPxxangular-wdio6-builder-demoe2etestspecsbasic.spec.ts      

上面的输出来自一个WebdriverIO Boilerplate项目的克隆。除了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

有人知道如何让这个样本与import语句一起使用吗?

提前感谢

Rob

顺便说一句,这是它在e2e/test/spec/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!');
});
});

我已经拿到了。要做几件事:

  • 在e2e文件夹中创建tsconfig.json。此文件必须扩展基本的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"

我分叉了相同的回购,并在此处进行了更改:https://github.com/Michel73/angular-wdio6-builder-demo

还有一件事:在我的VSCode中,basic.spec.ts显示编译错误,因为VSCode似乎总是采用基本的tsconfig.js。因此,我为VSCode安装了TypeScript Auto Compiler扩展。

你能试着在wdio-js文件中将babel设置添加到你的测试框架中吗,例如:

摩卡:

mochaOpts: {
ui: 'bdd',
require: ['@babel/register', './test/helpers/common.js'],
// ...
},

茉莉花:

jasmineNodeOpts: {
// Jasmine default timeout
helpers: [require.resolve('@babel/register')],
// ...
},

相关内容

  • 没有找到相关文章

最新更新