我正在尝试使用 TS 和 Playwright 创建 CodeceptJS 的练习环境,但由于某种原因 VSCodes intellisense 拒绝显示任何建议。我可以手动输入代码,这很好并且有效,但我想让智能感知正常工作。
我已按照 CodeceptJS 网站上的快速入门指南执行以下步骤:
npx create-codeceptjs .
,这将执行 npm init
,然后安装 Codecept 和 playwright 所需的所有软件包,最后执行 npx codeceptjs init
,创建样板 TS 项目。tsconfig.json
{
"ts-node": {
"files": true
},
"compilerOptions": {
"target": "es2018",
"lib": ["es2018", "DOM"],
"esModuleInterop": true,
"module": "commonjs",
"strictNullChecks": false,
"types": ["codeceptjs", "node"],
"declaration": true,
"skipLibCheck": true
},
"exclude": ["node_modules"]
}
步骤.d.ts
/// <reference types='codeceptjs' />
type steps_file = typeof import('./steps_file');
declare namespace CodeceptJS {
interface SupportObject { I: I, current: any }
interface Methods extends Playwright {}
interface I extends ReturnType<steps_file> {}
namespace Translation {
interface Actions {}
}
}
steps_files.ts
// in this file you can append custom step methods to 'I' object
module.exports = function() {
return actor({
// Define custom steps here, use 'this' to access default methods of I.
// It is recommended to place a general 'login' function here.
});
}
package.json
{
"name": "codeceptjs-tests",
"version": "0.1.0",
"private": true,
"scripts": {
"codeceptjs": "codeceptjs run --steps",
"codeceptjs:headless": "HEADLESS=true codeceptjs run --steps",
"codeceptjs:ui": "codecept-ui --app",
"codeceptjs:demo": "codeceptjs run --steps -c node_modules/@codeceptjs/examples",
"codeceptjs:demo:headless": "HEADLESS=true codeceptjs run --steps -c node_modules/@codeceptjs/examples",
"codeceptjs:demo:ui": "codecept-ui --app -c node_modules/@codeceptjs/examples"
},
"devDependencies": {
"@codeceptjs/configure": "^0.10.0",
"@codeceptjs/examples": "^1.2.1",
"@codeceptjs/ui": "^0.5.0",
"@types/node": "^20.0.0",
"codeceptjs": "^3.4.1",
"playwright": "^1.33.0",
"ts-node": "^10.9.1",
"typescript": "^5.0.4"
}
}
登录_测试.ts
Feature('login');
Scenario('test something', ({ I }) => {
});
codecept.conf.ts
import { setHeadlessWhen, setCommonPlugins } from '@codeceptjs/configure';
// turn on headless mode when running with HEADLESS=true environment variable
// export HEADLESS=true && npx codeceptjs run
setHeadlessWhen(process.env.HEADLESS);
// enable all common plugins https://github.com/codeceptjs/configure#setcommonplugins
setCommonPlugins();
export const config: CodeceptJS.MainConfig = {
tests: './*_test.ts',
output: './output',
helpers: {
Playwright: {
url: 'https://www.saucedemo.com',
show: true,
browser: 'chromium'
}
},
include: {
I: './steps_file'
},
name: 'CodeceptJS'
}
将所有这些作为您在尝试从我的
amOnPage();
文件中 codeceptjs 的 I
对象调用来自 Playwright login_test.ts
的标准方法时从安装中获得的标准文件,我没有得到任何智能感知来显示可能的情况方法。我查遍了谷歌,找不到发生这种情况的原因,任何帮助将不胜感激。
这篇文章有一个答案为我解决了这个问题。
替换:
interface I extends ReturnType<steps_file> {}
与:
interface I extends ReturnType<steps_file>, WithTranslation<Methods> {}
这个解决方案不起作用。 至少对于 MacOS 来说是这样。
如果有人有新的解决方法,请告知。