Weboldal keresés

typescript - Miért nem működik az Intellisense a VS Code-ban a CodeceptJS Playwright használatakor?


Megpróbálok létrehozni egy gyakorló környezetet a CodeceptJS számára TS és Playwright használatával, de valamiért a VSCode intellisense nem hajlandó javaslatokat mutatni. Manuálisan be tudom gépelni a kódot, és az rendben van, működik, de szeretném, ha az intellisense működne.

A CodeceptJS weboldal gyorsindító útmutatóját betű szerint követtem a következő lépésekkel:

  1. Nyisd meg a könyvtárat és hajtsd végre a parancsot npx create-codeceptjs ., ez végrehajt egy npm init-et, majd telepíti az összes szükséges csomagot a Codecept és a Playwright számára, mielőtt végül végrehajtja a npx codeceptjs init-et, amely létrehozza az alap TS projektet.
  2. Ebben a projektben a következő fájljaim vannak:

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"]
}

steps.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 {}
  }
}

lépések_fájlok.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"
    }
}

bejelentkezés_teszt.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'
}

Mindezeket figyelembe véve, amelyek az alapértelmezett fájlok, amelyeket a telepítéskor kapunk, amikor megpróbálok egy szabványos metódust hívni a Playwright amOnPage(); metódusból a codeceptjs I objektumán a login_test.ts fájlomban, nem kapok semmilyen intellisense-t a lehetséges metódusok megjelenítéséhez. Mindenhol kerestem a Google-on, és nem találok okot arra, hogy miért történhet ez, bármilyen segítséget értékelnék.

Válasz #1

Ennek a bejegyzésnek van egy válasza, ami megoldotta a problémámat.

Cseréld: interface I extends ReturnType<steps_file> {}

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

Az Intellisense nem működik a Playwright és a REST esetében