gemini-testing / testplane

Testplane (ex-hermione) browser test runner based on mocha and wdio
https://testplane.io
MIT License
687 stars 62 forks source link

Некорректный тип функции `it(` #847

Open dicrtarasov opened 6 months ago

dicrtarasov commented 6 months ago

Last Hermione version that worked

7.x.x

Hermione version

8.1.0

Code to reproduce the issue

it("Мой тест", async ({currentTest}) => {
    ....
});

В новой версии ругается что currentTest не определена в Mocha.TestFunction, хотя ранее тут был тип TestDefinition от Hermione.

Expected behavior

syntax correct

Actual behavior

TS2339: Property 'currentTest' does not exist on type 'Done'.

Additional information

Лечится вот так в проектном global.d.ts:

// noinspection ES6UnusedImports
// eslint-disable-next-line @typescript-eslint/no-unused-vars
import type Hermione from 'hermione';

Node.js version

20.10.0

Operating System

macOS

DudaGod commented 6 months ago

Hello.

In your tsconfig.json file try to specify:

{
    "compilerOptions": {
        "types": [
            "hermione"
        ]
    }
}
dicrtarasov commented 6 months ago

This does not helps :((

image

image

But this is workaround:

image

shadowusr commented 5 months ago

You are right. Only your workaround or similar triple-slash directive works.

I'm working on this issue now and will let you know as soon as I figure out a solution.

shadowusr commented 5 months ago

After discussion with the team, I believe the only viable solution for us would be to publish typings separately in the @types package, even though hermione itself is now written in TypeScript. This way, everything would work as expected and global API would be visible automatically. Jest uses the same approach. I tried to do this quickly, but encountered some deeper types issues in one of our dependencies, so for now I'll put it into backlog.

Up until that, I suggest using the workaround you mentioned. We'll get back to this issue as soon as we can.