modernweb-dev / web

Guides, tools and libraries for modern web development.
https://modern-web.dev
MIT License
2.15k stars 271 forks source link

Test Runner 'manual' mode import path is not relative to rootPath #2721

Open jahorton opened 2 months ago

jahorton commented 2 months ago

I discovered this one alongside #2720.

If I try to use manual to inspect a test, the import path is based upon the absolute local filesystem path, regardless of what rootPath is set to. This can cause the imports to fail, only for manual mode, if rootPath is not a root directory, as the file is actually served based on its path from rootPath, not its full, absolute local filesystem path.

This appears to be handled correctly for standard testing; it's only an issue for manual mode.

Discovered with v0.18.1.

Suppose the following setup:

(For Windows fanatics, feel free to replace the /s with \s at your leisure.)

With repoRoot resolving to C://a/b, the automatic testing mode (manual: false) will handle all paths perfectly. However, the manual path will fail to resolve /c/d/e/f/myTest.spec.mjs or similar paths when importing test spec files. Directly inputting http://localhost:8000/c/d/e/f/myTest.spec.mjs will resolve properly and show the resource in-browser, but the manual test page's import will be /a/b/c/d/e/f/myTest.spec.mjs, as viewable via element/source inspection of the host page.