testplane icon indicating copy to clipboard operation
testplane copied to clipboard

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

Open dicrtarasov opened this issue 1 year ago • 4 comments

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

dicrtarasov avatar Feb 21 '24 13:02 dicrtarasov

Hello.

In your tsconfig.json file try to specify:

{
    "compilerOptions": {
        "types": [
            "hermione"
        ]
    }
}

DudaGod avatar Mar 05 '24 12:03 DudaGod

This does not helps :((

image

image

But this is workaround:

image

dicrtarasov avatar Mar 08 '24 20:03 dicrtarasov

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 avatar Mar 18 '24 16:03 shadowusr

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.

shadowusr avatar Mar 20 '24 22:03 shadowusr