-
Notifications
You must be signed in to change notification settings - Fork 0
On Device Test Plan
Manual test checklist for validating Decky Proton Pulse on real Steam Deck hardware. Run this after every significant change before considering a build release-ready.
See Developer Guide for how to deploy to your Deck and enable CEF debugging.
- Prerequisites
- 1. Deployment Verification
- 2. System Detection
- 3. Sidebar Panel
- 4. ProtonDB Badge
- 5. Ranked Report Modal
- 6. Apply Launch Options
- 7. Logging
- 8. Game-Running Guard
- 9. Error Handling
- 10. ProtonDB API Field Verification
- 11. Screenshot Gallery Flow Verification
- Decky Loader installed on the Steam Deck
- Plugin deployed via
bash scripts/deploy.sh --target stable --deck-ip <IP> - CEF remote debugging enabled (Decky Settings -> Allow Remote CEF Debugging)
- At least one game in your library with ProtonDB reports (e.g. Elden Ring, app ID 1245620)
- SSH access to the Deck for log inspection
- Note whether the Steam client is on stable or beta before starting the run
- Plugin appears in the Decky sidebar (lightning bolt icon visible)
- Record Steam client channel: stable / beta
- No errors in plugin loader journal:
ssh deck@192.168.1.x "journalctl -u plugin_loader -n 50 --no-pager | grep -i 'proton pulse\|error\|exception'" -
Proton Pulse initializingappears in the journal output - Log file created at
/tmp/decky-proton-pulse.log:ssh deck@192.168.1.x "cat /tmp/decky-proton-pulse.log"
Open the Decky sidebar -> Proton Pulse panel.
- No crash on panel open
- In CEF DevTools console (
http://192.168.1.x:8081), callget_system_infomanually or inspect the log for the detected values - Log shows detected CPU (should be AMD Ryzen 9 9950X3D or your actual CPU)
- Log shows detected GPU (should be NVIDIA GeForce RTX 5080 or your actual GPU)
-
gpu_vendoris correctly set tonvidia/amd/intel/other -
driver_versiondetected (not null) -
proton_customdetected if custom Proton is installed in~/.steam/root/compatibilitytools.d/ - Any null fields are logged at WARN level (check
/tmp/decky-proton-pulse.log)
Navigate to a game page in the Steam library (no game running).
- Sidebar shows the game name and badge preview once a game page is focused
- "Check ProtonDB ▶" button is enabled when on a game page with no game running
- "Check ProtonDB ▶" button description reads "Navigate to a game first" when no game is focused
- Debug Logs toggle is present and responds to taps
- Log viewer section is visible and shows log content (or "No logs yet." placeholder)
- Log viewer auto-scrolls to the bottom
Navigate to a game page with ProtonDB reports.
- Badge appears in the sidebar panel showing GPU tier + top rating (e.g.
⚡ PP·NVIDIA Platinum) - Badge shows
? No Datafor a game with no ProtonDB reports - Badge is hidden (not shown as broken/errored) if the ProtonDB summary request fails
- Badge position on game page: badge appears to the right of the existing ProtonDB badge on the game detail page
- Confirm it does not replace or overlap the existing badge
- If positioning is off, note the exact Steam DOM path using CEF DevTools and open an issue
Click "Check ProtonDB ▶" on a game with reports.
- Loading toast appears: "Fetching ProtonDB reports..."
- Modal opens with a list of ranked report cards
- GPU filter tabs are present: the user's GPU tier tab is selected by default
- NVIDIA tab shown and pre-selected for NVIDIA systems
- AMD tab shown and pre-selected for AMD systems
- "Other" tab shown and pre-selected for Intel / unknown GPU systems
- Switching filter tabs updates the visible cards correctly
- Report cards show: score badge, GPU tier badge, Proton version, recency, truncated notes
- Score badge color reflects rating (platinum = highest, borked = lowest)
- Cards are sorted by score descending within each GPU tier
- Selecting a card via checkbox deselects any previously selected card (radio behavior)
- "Exit" closes the modal with no changes
- Modal shows "No reports found for this game." for a game with no reports (and no crash)
-
Manage This Gamedoes not crash on Steam beta -
Manage This Gamedoes not crash on Steam stable - If beta and stable behave differently, capture both a screenshot and synced logs
Warning: This writes to Steam launch options. Test with a non-critical game first. Check the launch options before and after.
Before testing: note the current launch options for the test game. Steam Library -> right-click game -> Properties -> General -> Launch Options.
- Select a report card in the modal
- Click "Apply ▶"
- Success toast appears: "Launch options applied for [Game Name]"
- Verify launch options were written:
- Steam Library -> right-click game -> Properties -> General -> Launch Options
- Should contain
PROTON_VERSION="..."and%command%
- The written Proton version matches the selected report's
protonVersionfield shown on the card - Click "Clear" in the modal
- Verify launch options are now empty
- "Exit" after Clear leaves launch options empty (no unintended re-apply)
- Log file at
/tmp/decky-proton-pulse.logis written during normal use - Log entries include timestamps and level prefix:
[YYYY-MM-DD HH:MM:SS] [INFO] ... - Enable Debug Logs toggle in the sidebar - log viewer shows DEBUG-level entries
- Disable Debug Logs toggle - DEBUG entries stop appearing
- Log viewer in the sidebar reflects new log entries within ~3 seconds (polling interval)
- Log viewer auto-scrolls to the bottom on new content
- Log file does not grow unbounded - rotation kicks in at 5MB (hard to test manually; inspect
RotatingFileHandlerconfig inmain.py)
- Launch a game
- Open Decky sidebar -> Proton Pulse panel
- "Check ProtonDB ▶" button is disabled with description "Quit your game first"
- Button re-enables within ~5 seconds of quitting the game
- Attempting to click Apply while a game is running does nothing (button should already be disabled before the modal is opened, but verify no race condition)
- Disconnect network, navigate to a game page -> badge hidden (no error shown to user)
- Reconnect, navigate away and back -> badge reappears on next focus
- Navigate to a game with no ProtonDB reports (obscure title or test with app ID
0) - Badge shows
? No Data - Clicking "Check ProtonDB ▶" shows toast: "No ProtonDB reports found for this game."
- No crash or unhandled error
- Re-run the same game flow on Steam beta when available
- Re-run the same game flow on Steam stable when available
- Note whether any crash is reproducible only on one channel
- If behavior differs, document which UI surface breaks:
- Decky sidebar panel
Manage This Game- Logs tab
- Settings / About
- If
SetAppLaunchOptionsfails (hard to trigger manually - could test via CEF console:SteamClient.Apps.SetAppLaunchOptionswith invalid args) - Toast shows "Failed to apply - check logs"
- Error is logged to
/tmp/decky-proton-pulse.log
Verify that the live API response fields match the types defined in src/types.ts. Run from the Deck's terminal (or SSH in) to avoid rate limiting on a non-Deck IP.
curl -s "https://www.protondb.com/api/v1/reports/summaries/1245620.json" | python3 -m json.toolCheck each field against ProtonDBSummary in src/types.ts:
| Field | Expected type | Actual value |
|---|---|---|
score |
number (float) |
|
tier |
string (ProtonRating) |
|
total |
number |
|
trendingTier |
string (ProtonRating) |
|
bestReportedTier |
string (ProtonRating) |
|
confidence |
string |
- All fields present and types match
- If any field is missing or renamed, update
src/types.tsandsrc/components/Badge.tsx
curl -s "https://www.protondb.com/api/v1/reports/app/1245620" | python3 -m json.tool | head -60Check each field against ProtonDBReport in src/types.ts:
| Field | Expected type | Actual value |
|---|---|---|
timestamp |
number (Unix seconds) |
|
rating |
string (ProtonRating) |
|
protonVersion |
string |
|
notes |
string |
|
responses.gpu |
string (optional) |
|
responses.gpuDriver |
string (optional) |
|
responses.os |
string (optional) |
|
responses.ram |
number (optional) |
|
responses.kernel |
string (optional) |
|
responses.cpu |
string (optional) |
- All fields present and types match
- If any field is missing or renamed, update
src/types.tsandsrc/lib/scoring.ts
Use this section when refreshing [[UI Screenshot Gallery]] on a real Deck.
- Manage Game
- Manage Configurations
- Compatibility Tools
- Logs
- Settings
- Issue Reporting
- About
-
manage-game/default -
manage-game/report-detail -
manage-game/hardware-compare -
manage-game/edit-modal -
manage-configurations/default -
compatibility-tools/tab -
compatibility-tools/release-picker -
logs/tab -
settings/general -
settings/cache-manager-modal -
settings/language-selector -
issue-reporting/template-selector -
about/tab
- Manage Configurations config editor modal
- Manage Configurations ProtonDB submit modal
- Manage Game missing-version decision modal
- Manage Game installed-version picker modal
- Compatibility Tools install-from-ZIP modal
- Logs tab base view
- Settings advanced cache/performance section
- Retired screenshot keys do not remain in the wiki after publish
- No duplicate PNGs exist for the same logical screen
- Each screenshot lands on the correct visible page, not just the correct automation state
- The gallery reads like a left-nav walkthrough before showing deeper modals
| Area | Pass | Notes |
|---|---|---|
| Deployment | ||
| System detection | ||
| Sidebar panel | ||
| ProtonDB badge | ||
| Ranked report modal | ||
| Apply launch options | ||
| Logging | ||
| Game-running guard | ||
| Error handling | ||
| API field verification |
Tester: Date: Steam client channel: Deck OS version: Decky Loader version: Plugin version: