首页 > 解决方案 > 本地安装时,Testcafe 未使用 typescript 运行

问题描述

如果我卸载本地安装并在全局范围内安装它,它可以工作,但出于可移植性的原因,我更喜欢本地安装。

这是一个正在使用的yarn项目typescript v3.7.3,我正在使用testcafe v1.9.1.

要安装我跑了:

yarn add --dev testcafe

并创建了一个非常简单的测试e2e-tests/test.ts

当我尝试使用运行此测试时,yarn run testcafe chrome e2e-tests/test.ts我得到以下堆栈跟踪:

yarn run v1.22.4
$ testcafe chrome e2e-tests/
ERROR TypeError: unknown: Property value expected type of string but got null
    at Object.validate (project/node_modules/@babel/core/node_modules/@babel/types/lib/definitions/utils.js:160:13)
    at validateField (project/node_modules/@babel/core/node_modules/@babel/types/lib/validators/validate.js:24:9)
    at validate (project/node_modules/@babel/core/node_modules/@babel/types/lib/validators/validate.js:17:3)
    at builder (project/node_modules/@babel/core/node_modules/@babel/types/lib/builders/builder.js:38:27)
    at Object.StringLiteral (project/node_modules/@babel/core/node_modules/@babel/types/lib/builders/generated/index.js:350:31)
    at enter (project/node_modules/react-hot-loader/dist/babel.development.js:605:29)
    at sourceRecord.<computed> (project/node_modules/react-hot-loader/dist/babel.development.js:688:16)
    at PluginPass.sourceRecord.<computed> (project/node_modules/react-hot-loader/dist/babel.development.js:687:14)
    at newFn (project/node_modules/@babel/core/node_modules/@babel/traverse/lib/visitors.js:179:21)
    at NodePath._call (project/node_modules/@babel/core/node_modules/@babel/traverse/lib/path/context.js:55:20)
    at NodePath.call (project/node_modules/@babel/core/node_modules/@babel/traverse/lib/path/context.js:42:17)
    at NodePath.visit (project/node_modules/@babel/core/node_modules/@babel/traverse/lib/path/context.js:90:31)
    at TraversalContext.visitQueue (project/node_modules/@babel/core/node_modules/@babel/traverse/lib/context.js:112:16)
    at TraversalContext.visitSingle (project/node_modules/@babel/core/node_modules/@babel/traverse/lib/context.js:84:19)
    at TraversalContext.visit (project/node_modules/@babel/core/node_modules/@babel/traverse/lib/context.js:140:19)
    at Function.traverse.node (project/node_modules/@babel/core/node_modules/@babel/traverse/lib/index.js:84:17)
    at traverse (project/node_modules/@babel/core/node_modules/@babel/traverse/lib/index.js:66:12)
    at transformFile (project/node_modules/@babel/core/lib/transformation/index.js:107:29)
    at transformFile.next (<anonymous>)
    at run (project/node_modules/@babel/core/lib/transformation/index.js:35:12)
    at run.next (<anonymous>)
    at Function.transform (project/node_modules/@babel/core/lib/transform.js:27:41)
    at transform.next (<anonymous>)
    at evaluateSync (project/node_modules/gensync/index.js:244:28)
    at Function.sync (project/node_modules/gensync/index.js:84:14)
    at Object.transform (project/node_modules/@babel/core/lib/transform.js:36:54)
    at downgradeES (project/node_modules/testcafe/src/compiler/compile-client-function.js:53:28)
    at Object.compileClientFunction [as default] (project/node_modules/testcafe/src/compiler/compile-client-function.js:110:14)
    at ClientFunctionBuilder._getCompiledFnCode (project/node_modules/testcafe/src/client-functions/client-function-builder.js:114:41)
    at new ClientFunctionBuilder (project/node_modules/testcafe/src/client-functions/client-function-builder.js:30:36)
    at convertFilterToClientFunctionIfNecessary (project/node_modules/testcafe/src/client-functions/selectors/add-api.js:307:17)
    at Object.<anonymous> (project/node_modules/testcafe/src/client-functions/selectors/add-api.js:342:22)
    at Module._compile (internal/modules/cjs/loader.js:1151:30)
    at Module._compile (project/node_modules/source-map-support/source-map-support.js:541:25)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Module.require (internal/modules/cjs/loader.js:1040:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (project/node_modules/testcafe/src/client-functions/selectors/selector-builder.js:11:1)
    at Module._compile (internal/modules/cjs/loader.js:1151:30)
    at Module._compile (project/node_modules/source-map-support/source-map-support.js:541:25)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Module.require (internal/modules/cjs/loader.js:1040:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (project/node_modules/testcafe/src/test-run/commands/actions.js:2:1)
    at Module._compile (internal/modules/cjs/loader.js:1151:30)
    at Module._compile (project/node_modules/source-map-support/source-map-support.js:541:25)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Module.require (internal/modules/cjs/loader.js:1040:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (project/node_modules/testcafe/src/api/test-controller/index.js:14:1)
    at Module._compile (internal/modules/cjs/loader.js:1151:30)
    at Module._compile (project/node_modules/source-map-support/source-map-support.js:541:25)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Module.require (internal/modules/cjs/loader.js:1040:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (project/node_modules/testcafe/src/api/wrap-test-function.ts:1:1)
    at Module._compile (internal/modules/cjs/loader.js:1151:30)
    at Module._compile (project/node_modules/source-map-support/source-map-support.js:541:25)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Module.require (internal/modules/cjs/loader.js:1040:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (project/node_modules/testcafe/src/api/structure/fixture.ts:7:1)
    at Module._compile (internal/modules/cjs/loader.js:1151:30)
    at Module._compile (project/node_modules/source-map-support/source-map-support.js:541:25)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Module.require (internal/modules/cjs/loader.js:1040:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (project/node_modules/testcafe/src/compiler/test-file/api-based.js:6:1)
    at Module._compile (internal/modules/cjs/loader.js:1151:30)
    at Module._compile (project/node_modules/source-map-support/source-map-support.js:541:25)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Module.require (internal/modules/cjs/loader.js:1040:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (project/node_modules/testcafe/src/compiler/test-file/formats/es-next/compiler.js:2:1)
    at Module._compile (internal/modules/cjs/loader.js:1151:30)
    at Module._compile (project/node_modules/source-map-support/source-map-support.js:541:25)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Module.require (internal/modules/cjs/loader.js:1040:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (project/node_modules/testcafe/src/compiler/compilers.js:3:1)
    at Module._compile (internal/modules/cjs/loader.js:1151:30)
    at Module._compile (project/node_modules/source-map-support/source-map-support.js:541:25)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Module.require (internal/modules/cjs/loader.js:1040:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (project/node_modules/testcafe/src/compiler/index.js:6:1)
    at Module._compile (internal/modules/cjs/loader.js:1151:30)
    at Module._compile (project/node_modules/source-map-support/source-map-support.js:541:25)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Module.require (internal/modules/cjs/loader.js:1040:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (project/node_modules/testcafe/src/runner/bootstrapper.ts:9:1)
    at Module._compile (internal/modules/cjs/loader.js:1151:30)
    at Module._compile (project/node_modules/source-map-support/source-map-support.js:541:25)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Module.require (internal/modules/cjs/loader.js:1040:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (project/node_modules/testcafe/src/runner/index.js:7:1)
    at Module._compile (internal/modules/cjs/loader.js:1151:30)
    at Module._compile (project/node_modules/source-map-support/source-map-support.js:541:25)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Module.require (internal/modules/cjs/loader.js:1040:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at lazy (project/node_modules/import-lazy/index.js:2:51)
    at Object.construct (project/node_modules/import-lazy/index.js:18:11)
    at TestCafe._createRunner (project/node_modules/testcafe/src/testcafe.js:75:27)
    at TestCafe.createRunner (project/node_modules/testcafe/src/testcafe.js:90:21)
    at runTests (project/node_modules/testcafe/src/cli/cli.js:91:75)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at cli (project/node_modules/testcafe/src/cli/cli.js:161:13)

任何帮助或见解将不胜感激!

更新:

我已将问题归结为特定的 babel 插件。如果我删除react-hot-loader/babel它运行,还不确定为什么。删除后我遇到了这个新问题react-hot-loader/babel

yarn run v1.22.4
$ testcafe chrome e2e-tests/
The "browsers" option from the configuration file will be ignored.
ERROR Cannot prepare tests due to an error.

Error: Using removed Babel 6 option: .resolveModuleSource - Use `babel-plugin-module-resolver@3`'s 'resolvePath' options
    at throwUnknownError (project/node_modules/@babel/core/lib/config/validation/options.js:121:11)
    at project/node_modules/@babel/core/lib/config/validation/options.js:108:5
    at validateNested (project/node_modules/@babel/core/lib/config/validation/options.js:84:21)
    at validate (project/node_modules/@babel/core/lib/config/validation/options.js:75:10)
    at loadPrivatePartialConfig (project/node_modules/@babel/core/lib/config/partial.js:76:50)
    at loadFullConfig (project/node_modules/@babel/core/lib/config/full.js:57:46)
    at Function.transform (project/node_modules/@babel/core/lib/transform.js:25:45)
    at evaluateSync (project/node_modules/gensync/index.js:244:28)
    at Function.sync (project/node_modules/gensync/index.js:84:14)
    at Object.transform (project/node_modules/@babel/core/lib/transform.js:36:54)

标签: typescripttestingautomated-testse2e-testingtestcafe

解决方案


推荐阅读