# test\(desktop\): make path fixtures and timeouts host-portable · PR \#9568 · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/pull/9568)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

State: merged

Source repository: pingdotgg/t3code

Source branch: windows-tests/desktop-paths

Target branch: windows-tests/fake-cli

Head commit: 391e4ab11c45bb489167ff67c8cd092333812f9c

[Discussion and reviews](https://git.cafe/pingdotgg/t3code/pull/9568)

[Commits](https://git.cafe/pingdotgg/t3code/pull/9568/commits?format=markdown)

[Files changed](https://git.cafe/pingdotgg/t3code/pull/9568/diffs?format=markdown)

## Description

---

Desktop path fixtures mixed POSIX literals with values built by the host Path implementation, while the macOS launcher helpers used host-native joins for paths that are always inside a macOS bundle. Those assumptions fail when the suite runs on Windows.

Build test expectations with the injected Path service, use POSIX joins for macOS bundle-internal paths, and keep the fcntl-only Firefox lock case off Windows. The broad Windows lane runs package suites concurrently, so desktop tests now get a 15-second budget instead of Vitest’s 5-second default; this covers the filesystem-heavy observability case without weakening its assertions.

Part of the Windows test-suite stack rooted at [#9564](https://github.com/pingdotgg/t3code/pull/9564); the manual Windows lane comes from [#9538](https://github.com/pingdotgg/t3code/pull/9538).

Originally prepared with Claude Fable 5 in Claude Code; finalized with GPT-5.6 Sol in T3 Code.


<!-- Macroscope's pull request summary starts here -->
<!-- Macroscope will only edit the content between these invisible markers, and the markers themselves will not be visible in the GitHub rendered markdown. -->
<!-- If you delete either of the start / end markers from your PR's description, Macroscope will append its summary at the bottom of the description. -->
> [!NOTE]
> ### Use injected `Path` service in tests and fix macOS launcher POSIX paths
> - Refactors desktop tests to build expected paths via the injected Effect `Path` service instead of hardcoded slash-separated literals, making assertions platform-independent
> - Fixes [electron-launcher.mjs](https://github.com/pingdotgg/t3code/pull/9568/files#diff-8a117bf8144a87af3b3928053a08e442ffe3b14884df08757b77d55907d596b4) `resolveMacLauncherPaths` and `resolveMacLauncherIconPaths` to use POSIX path joining for macOS bundle-internal paths instead of the host platform's default separator
> - Wraps the Firefox `fcntl` parent-lock test in a Windows guard so it is skipped on Windows hosts
> - Adds a 15-second test timeout in [vite.config.ts](https://github.com/pingdotgg/t3code/pull/9568/files#diff-5fc8c830ebf6102f62b066b8a0120f2bb98d8ab83abe63719f30a03c5dc16b2c) for filesystem-heavy desktop integration tests on Windows
> - Behavioral Change: `resolveMacLauncherPaths` and `resolveMacLauncherIconPaths` now emit POSIX-style paths regardless of the build host OS; check in-tree consumers of these paths on Windows build hosts to confirm they tolerate forward slashes
>
> <!-- Macroscope's review summary starts here -->
>
> <sup><a href="https://app.macroscope.com">Macroscope</a> summarized 391e4ab.</sup>
> <!-- Macroscope's review summary ends here -->
>
<!-- Macroscope's pull request summary ends here -->

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Changes are mostly test fixtures and CI timeout; the launcher POSIX join only affects macOS bundle path strings when Electron is built from a non-macOS host.
> 
> **Overview**
> Makes the desktop test suite reliable on **Windows CI** by aligning path construction with the host OS and fixing macOS-bundle path helpers when the build machine is not macOS.
> 
> **Launcher:** `resolveMacLauncherIconPaths` and `resolveMacLauncherPaths` now use **`NodePath.posix.join`** for paths inside `.app` bundles (with a short comment that bundle internals are always macOS-style), so a Windows build host does not emit backslash paths into bundle layout.
> 
> **Tests:** Connection catalog, saved environments, and browser-import tests build expected paths via Effect **`Path.Path`** / **`context.path.join`** instead of hard-coded `/` segments; launcher icon assertions accept **`/` or `\`** for repo asset paths. The Firefox **fcntl** `.parentlock` integration test is skipped on **win32**.
> 
> **Vitest:** Desktop **`testTimeout`** is raised to **15s** for filesystem-heavy tests under concurrent Windows lanes.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 116cc80698ea017b7ee96a933046ed6b98a125a7. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
