Jur*_*ur_ 5 typescript tsconfig webdriver-io angular
我正在尝试使用简单的 webdrioverio e2e 测试设置一个示例 Angular 项目,但在我的 e2e 测试中遇到了一些编译错误。
\n该项目主要使用以下文件进行设置:
\ne2e / test / [e2e test code]\ne2e / tsconfig.e2e.json\ne2e / wdio.conf.js\npackage.json\ntsconfig.json\nRun Code Online (Sandbox Code Playgroud)\n我的基地tsconfig.json看起来像:
{\n "compileOnSave": false,\n "compilerOptions": {\n "baseUrl": "./",\n "outDir": "./dist/out-tsc",\n "sourceMap": true,\n "declaration": false,\n "downlevelIteration": true,\n "experimentalDecorators": true,\n "module": "esnext",\n "moduleResolution": "node",\n "importHelpers": true,\n "target": "es2018",\n "lib": [\n "es2018",\n "dom"\n ]\n },\n "angularCompilerOptions": {\n "fullTemplateTypeCheck": true,\n "strictInjectionParameters": true\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n看起来tsconfig.e2e.json像:
{\n "extends": "../tsconfig.json",\n "compilerOptions": {\n "module": "CommonJS",\n "outDir": "../dist/out-tsc/e2e",\n "baseUrl": "./",\n "target": "es2018",\n "types": [\n "node",\n "@wdio/sync",\n "@wdio/jasmine-framework",\n "jasminewd2"\n ]\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n从我的 IDE 终端运行tsc或尝试执行脚本e2e会package.json导致以下错误:
[0-0] 2021-02-09T15:47:53.019Z WARN @wdio/jasmine-framework: Unable to load spec files quite likely because they rely on `browser` object that is not fu\nlly initialised.\n`browser` object has only `capabilities` and some flags like `isMobile`.\nHelper files that use other `browser` commands have to be moved to `before` hook.\nSpec file(s): C:\\dev\\source\\rme\\angular-wdio6-builder-demo\\e2e\\test\\specs\\basic.spec.ts\n Error: TSError: \xe2\xa8\xaf Unable to compile TypeScript:\ne2e/test/specs/basic.spec.ts(7,5): error TS2304: Cannot find name \'browser\'.\ne2e/test/specs/basic.spec.ts(8,19): error TS2304: Cannot find name \'browser\'.\ne2e/test/specs/basic.spec.ts(13,5): error TS2304: Cannot find name \'browser\'.\ne2e/test/specs/basic.spec.ts(14,21): error TS2581: Cannot find name \'$\'. Do you need to install type definitions for jQuery? Try `npm i @types/jquery`.\nRun Code Online (Sandbox Code Playgroud)\n可以在 GitLab 上找到基于此问题的完整 MRE 。它包含一个 CI 脚本,该脚本显示了我在本地运行时遇到的错误输出。
\n另请注意,我的 intellij IDEbrowser很好地引用了 -object,并且按住 Ctrl 键单击它会显示浏览器 var 位于文件中node_modules\\@wdio\\sync\\webdriverio.d.ts。
编辑/附加: \n在之前执行的脚本package.json中,它调用:pree2ee2ee2e/e2e.cmd
set TS_NODE_PROJECT=e2e/tsconfig.e2e.json\nRun Code Online (Sandbox Code Playgroud)\nedit2:wdio.conf.js配置文件:
包括(生成的)注释的完整文件也在最小可重现示例中:e2e/wdio.conf.js
\nexports.config = {\n runner: \'local\',\n path: \'/\',\n specs: [\n `${__dirname}/test/specs/**/*.ts`\n ],\n exclude: [\n ],\n maxInstances: 10,\n capabilities: [{\n maxInstances: 5,\n browserName: \'chrome\',\n }],\n logLevel: \'warn\',\n bail: 0,\n baseUrl: `http://localhost:${process.env.PORT || 4200}`,\n waitforTimeout: 10000,\n connectionRetryTimeout: 90000,\n connectionRetryCount: 3,\n services: [\'chromedriver\'],\n framework: \'jasmine\',\n jasmineNodeOpts: {\n requires: [\'ts-node/register\'],\n defaultTimeoutInterval: 60000,\n expectationResultHandler: function(passed, assertion) {\n // do something\n }\n },\n}\nRun Code Online (Sandbox Code Playgroud)\n
您可以在 wdio.conf 文件中运行 tsnode。另外,在您的 jasmine 选项中,您应该需要 tsconfig-paths :
const tsNode = require('ts-node');
tsNode.register({
files: true,
project: './e2e/tsconfig.e2e.json'
});
exports.config = {
....
jasmineNodeOpts: {
// Required for Typescript
requires: ['tsconfig-paths/register'],
...
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6691 次 |
| 最近记录: |