feat: Checkly check-parser use the paths alias defined in tsconfig.json
obi-awyss opened this issue · 2 comments
What problem does this feature solve?
Currently the Checkly's check-parser
does not consider https://www.typescriptlang.org/tsconfig#paths when resolving local imported files.
With some paths alias defined in tsconfig.json for the project:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"_/*": ["./src/*"],
"_checkly/*": ["./checkly/*"]
},
...
Any spec files that use an alias in the import statement will also work in Checkly like it already does in Playwright.
import { baseURL } from '_checkly/constants';
Today this does not work and you get this error:
Parsing your project... !
Error: Error loading file /Users/awyss/gitlab.obsec1/frontend/app-product/checkly/__checks__/browser-group.check.ts
Error: Encountered an error parsing check files for /Users/awyss/gitlab.obsec1/frontend/app-product/src/e2e/login.spec.ts.
The following NPM dependencies were used, but aren't supported in the runtimes.
For more information, see https://www.checklyhq.com/docs/runtimes/.
/Users/awyss/gitlab.obsec1/frontend/app-product/src/e2e/login.spec.ts imports unsupported dependencies:
_checkly/constants
at Collector.validate (/Users/awyss/gitlab.obsec1/frontend/app-product/node_modules/checkly/src/services/check-parser/collector.ts:48:13)
at Parser.parse (/Users/awyss/gitlab.obsec1/frontend/app-product/node_modules/checkly/src/services/check-parser/parser.ts:146:15)
at Function.bundle (/Users/awyss/gitlab.obsec1/frontend/app-product/node_modules/checkly/src/constructs/browser-check.ts:109:27)
at new BrowserCheck (/Users/awyss/gitlab.obsec1/frontend/app-product/node_modules/checkly/src/constructs/browser-check.ts:69:35)
at /Users/awyss/gitlab.obsec1/frontend/app-product/checkly/__checks__/browser-group.check.ts:30:5
at Array.forEach (<anonymous>)
at /Users/awyss/gitlab.obsec1/frontend/app-product/checkly/__checks__/browser-group.check.ts:28:13
at Array.forEach (<anonymous>)
at Object.<anonymous> (/Users/awyss/gitlab.obsec1/frontend/app-product/checkly/__checks__/browser-group.check.ts:9:18)
at Module._compile (node:internal/modules/cjs/loader:1155:14)
This is because Checkly check-parser is not resolving the alias to the local file and instead assumes an NPM package.
How would you implement this feature?
Improve the Checkly's check-parser
to use the the information in the tsconfig.json file to resolve any import of a local file that use an alias at the beginning of the import path.
import { baseURL } from '_checkly/constants';
import { foo } from '_/someFolder/foo';
becomes
import { baseURL } from './checkly/constants';
import { foo } from './src/someFolder/foo';
Same issue here, nextjs project with a tsconfig alias setup, means that I can't use checkly, or I need to rewrite all the paths in my project (not possible)