Add Firefox support, UI tests, and responsive tab search#6
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
Adds Firefox support to the Browser Tabs Command Palette extension, and introduces both unit tests and local-first UI integration tests (Chrome/Edge/Firefox) plus coverage collection and CI wiring.
Changes:
- Extend browser detection and user-facing strings/docs to include Firefox.
- Refactor tab discovery to enable unit testing of tab shaping/dedup/sorting; add new unit test project.
- Add UI integration test project and a manual
ui-testsGitHub Actions workflow (with Cobertura coverage collection).
Reviewed changes
Copilot reviewed 26 out of 26 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/Poc/Program.cs | Add Firefox recognition in the PoC browser-name detection helper. |
| src/extension/WcpBrowserTabs/WcpBrowserTabs/Properties/AssemblyInfo.cs | Expose internals to new test assemblies. |
| src/extension/WcpBrowserTabs/WcpBrowserTabs/Pages/WcpBrowserTabsPage.cs | Update UI strings to mention Firefox support. |
| src/extension/WcpBrowserTabs/WcpBrowserTabs/BrowserTabDiscoveryService.cs | Add Firefox support and refactor discovery into a testable CreateTabs pipeline. |
| src/extension/WcpBrowserTabs/WcpBrowserTabs.UiTests/xunit.runner.json | Disable parallel execution for UI tests. |
| src/extension/WcpBrowserTabs/WcpBrowserTabs.UiTests/WcpBrowserTabs.UiTests.csproj | New UI test project targeting Windows, with coverage collector and xUnit. |
| src/extension/WcpBrowserTabs/WcpBrowserTabs.UiTests/coverage.runsettings | Cobertura coverage configuration for UI test runs. |
| src/extension/WcpBrowserTabs/WcpBrowserTabs.UiTests/BrowserTestSession.cs | Test harness that launches browsers with temp profiles and polls for UIA-exposed tabs. |
| src/extension/WcpBrowserTabs/WcpBrowserTabs.UiTests/BrowserDiscoveryUiTests.cs | UI discovery tests validating known tab titles are surfaced. |
| src/extension/WcpBrowserTabs/WcpBrowserTabs.UiTests/BrowserDefinitions.cs | Definitions/paths for Chrome, Edge, and Firefox. |
| src/extension/WcpBrowserTabs/WcpBrowserTabs.UiTests/BrowserDefinition.cs | Executable discovery + per-browser launch arguments. |
| src/extension/WcpBrowserTabs/WcpBrowserTabs.UiTests/BrowserActivationUiTests.cs | UI activation test validating selecting an inactive tab activates it. |
| src/extension/WcpBrowserTabs/WcpBrowserTabs.UiTests/AssemblyInfo.cs | Disable xUnit parallelization at assembly level for UI tests. |
| src/extension/WcpBrowserTabs/WcpBrowserTabs.Tests/WcpBrowserTabs.Tests.csproj | New unit test project for discovery shaping and activation guards. |
| src/extension/WcpBrowserTabs/WcpBrowserTabs.Tests/coverage.runsettings | Cobertura coverage configuration for unit test runs. |
| src/extension/WcpBrowserTabs/WcpBrowserTabs.Tests/BrowserWindowActivatorTests.cs | Unit test for zero-handle guard behavior. |
| src/extension/WcpBrowserTabs/WcpBrowserTabs.Tests/BrowserTabDiscoveryServiceTests.cs | Unit tests for browser-name mapping, tab shaping, dedup, sorting, STA helper, and activation result factories. |
| src/extension/WcpBrowserTabs/WcpBrowserTabs.sln | Add new test projects to the solution. |
| src/extension/WcpBrowserTabs/Directory.Packages.props | Centralize versions for test/coverage packages (xUnit, test SDK, coverlet). |
| scripts/build-and-install-local.ps1 | New helper script to package, trust cert, and install a local build. |
| README.md | Update docs for Firefox support and add test/coverage run instructions. |
| PUBLISHING.md | Update Store listing copy/keywords/testing instructions to include Firefox. |
| PRIVACY.md | Update privacy statement to include Firefox in local UIA discovery. |
| AGENTS.md | Update repository overview to include Firefox as a supported browser. |
| .github/workflows/ui-tests.yml | New manual workflow to run unit + UI tests with coverage and upload artifacts. |
| .github/workflows/ci.yml | Run unit tests as part of CI. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ui-testsworkflow while keeping headed browser tests out of mandatory CIValidation
git diff --checkdotnet build src/extension/WcpBrowserTabs/WcpBrowserTabs.sln --configuration Debug --no-restore /p:Platform=x64$env:DOTNET_ROLL_FORWARD='Major'; dotnet test src/extension/WcpBrowserTabs/WcpBrowserTabs.Tests/WcpBrowserTabs.Tests.csproj --configuration Debug --no-restore /p:Platform=x64DOTNET_ROLL_FORWARD=Major dotnet test src\extension\WcpBrowserTabs\WcpBrowserTabs.UiTests\WcpBrowserTabs.UiTests.csproj --configuration Debug --filter Category=Ui /p:Platform=x64Notes
The UI tests launch real browser processes with isolated temporary profiles and known local HTML pages. Firefox requires profile preferences that keep accessibility enabled and suppress first-run UI so its tab surface is available through Windows UI Automation.
The search responsiveness fix changes the tab page from a dynamic list to a standard list. Browser tab discovery refreshes the cached item set in the background, while Command Palette handles filtering during typing.