fastify-cli icon indicating copy to clipboard operation
fastify-cli copied to clipboard

Missing types for test helpers in 'fastify-cli/helper', cannot use it with import statement

Open shwarcu opened this issue 2 years ago • 3 comments

Prerequisites

  • [X] I have written a descriptive issue title
  • [X] I have searched existing issues to ensure the bug has not already been reported

Fastify version

5.7.1

Plugin version

No response

Node.js version

v18.15.0

Operating system

macOS

Operating system version (i.e. 20.04, 11.3, 10)

13.2.1 (22D68)

Description

I am setting up tests for Fastify application. Our codebase and tests are in TypeScript. I try to follow documentation here https://github.com/fastify/fastify-cli#test-helpers but there's no declaration file for fastify-cli I get error Could not find a declaration file for module 'fastify-cli/helper'. or Could not find a declaration file for module 'fastify-cli'. if I try to import anything from the package.

Steps to Reproduce

  1. Setup TypeScript project
  2. Setup some tests in TypeScript for example https://node-tap.org/docs/getting-started
  3. Try to apply guide from https://github.com/fastify/fastify-cli#test-helpers in typescript setup
import { build } from 'fastify-cli/helper';
import tap from 'tap';

tap.test('Responds', (test) => {
  test.end();
});

Expected Behavior

I would like to be able to use test helpers in TypeScript tests by importing it with import statement and have correct typings for it.

I've seen your workaround from here https://github.com/fastify/fastify-cli/pull/554/files but using require doesn't solve the root problem.

shwarcu avatar Mar 17 '23 10:03 shwarcu

Thanks for reporting! Would you like to send a Pull Request to address this issue? Remember to add unit tests.

mcollina avatar Mar 20 '23 20:03 mcollina

Just ended up here as I was looking for the exact same issue. I would like to make a PR but Im unsure on how to properly add the typings definitions into the project as I'm used to write Typescript directly or typings for external libraries.

Should I:

  • Add a helper.d.ts file next to helper.js file?
  • Add typings into a dedicated types folder?
  • Add types directly into the helper.js file using JSDoc and TSC to emit declaration file automatically?
  • Add typings in DefinitivelyTyped repository?

Let me know your preference and I'll take care of this

g0di avatar Apr 27 '23 09:04 g0di

It seems like there are types now, but they are incomplete, saying that build returns any instead of a FastifyInstance.

segevfiner avatar Sep 10 '23 20:09 segevfiner