为什么我的智能感知无法在使用 playwright 的 CodeceptJS 的 VS Code 中工作?

问题描述 投票:0回答:2

我正在尝试使用 TS 和 Playwright 创建 CodeceptJS 的练习环境,但由于某种原因 VSCodes intellisense 拒绝显示任何建议。我可以手动输入代码,这很好并且有效,但我想让智能感知正常工作。

我已按照 CodeceptJS 网站上的快速入门指南执行以下步骤:

  1. 打开目录并执行命令
    npx create-codeceptjs .
    ,这将执行
    npm init
    ,然后安装 Codecept 和 playwright 所需的所有软件包,最后执行
    npx codeceptjs init
    ,创建样板 TS 项目。
  2. 在这个项目中我有以下文件:

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
的标准方法时从安装中获得的标准文件,我没有得到任何智能感知来显示可能的情况方法。我查遍了谷歌,找不到发生这种情况的原因,任何帮助将不胜感激。

typescript visual-studio-code intellisense codeceptjs
2个回答
0
投票

这篇文章有一个答案为我解决了这个问题。

替换:

interface I extends ReturnType<steps_file> {}

与:

interface I extends ReturnType<steps_file>, WithTranslation<Methods> {}

智能感知不适用于剧作家,REST


0
投票

这个解决方案不起作用。 至少对于 MacOS 来说是这样。

如果有人有新的解决方法,请告知。

© www.soinside.com 2019 - 2024. All rights reserved.