feat: Automated test suite for hathor-wallet-mobile#110
Open
tuliomir wants to merge 7 commits into
Open
Conversation
Multi-layered testing pyramid (unit, integration, component, E2E) with Maestro as the E2E framework. Chosen over Detox for LavaMoat/SES compatibility. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Move all Detox discussion to Rationale and Alternatives section with detailed pros/cons and conditions for reconsidering - Remove Detox references from other sections - Add issue links for Fabric bugs (Switch, TouchableOpacity, Pressable) - Add BackupWords wrong-word error validation to flow description - Add AI agent testing guidelines (CLAUDE.md) to Future Possibilities - Clarify that production code workarounds are framework-agnostic Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Rewrite the production-code-changes section of RFC 0004 to document the
canonical Maestro/React Native fix (accessible={false} on layout Views)
instead of the earlier layout-based workaround. The previous "flex
container layout fix" and the TouchableOpacity-to-Pressable migration
were both symptoms of the same iOS accessibility-tree issue and have
been removed from the production code.
Restructure Future Possibility #7 (AI agent testing guidelines) into a
two-tier shape ready to be lifted directly into the wallet repo's
CLAUDE.md (brief authoritative rules) and a companion skill/knowledge
file (depth on test patterns, the iOS a11y rule, Fabric workarounds
catalogue, Maestro conventions).
Add Unresolved Question #5 noting that a Maestro re-run of
walletCreation.yaml against the canonical-pattern code is the remaining
verification step.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Maestro re-verification on iPhone 17 / iOS 26.4 / Xcode 26.4.1 proved
the previous "canonical pattern replaces all workarounds" framing was
wrong. The accessible={false} fix is necessary but not sufficient.
Three independent issues all need their own fix:
1. Accessibility tree aggregation (accessible={false} on layout Views)
2. TouchableOpacity onPress not firing under Fabric+XCUITest (Pressable
migration with JS-level disabled guard)
3. Flex containers intercepting synthetic taps even with accessible={false}
(buttons rendered as siblings, not children, of flex:1 spacers)
Plus the previously documented ToggleSwitch (UISwitch onValueChange
bug) and testID props.
Removing any one of #1, #2, or #3 breaks E2E silently — Maestro reports
the tap as COMPLETED but the synthetic touch never reaches JS. The
hierarchy dump confirms XCUITest finds the element correctly; the
gesture is intercepted upstream of the JS layer.
Restructured production-code-changes section to enumerate all three
clearly, with diagnostic notes. Updated Future Possibility #7's
CLAUDE.md content with all three rules + a diagnostic workflow agents
can use when "Maestro tap COMPLETED but app didn't respond."
Marked Unresolved Question #5 resolved.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Promotes 0004-automated-test-suite.md into a folder following the 0003-token-swap pattern. The deep iOS Fabric/XCUITest implementation detail and the wallet-creation E2E walkthrough move into a companion phase-4-e2e-deep-dive.md annex; the main RFC keeps a Phase 4 summary with anchors into the annex. Syncs the RFC against the proposed Layers 1-3 implementation in HathorNetwork/hathor-wallet-mobile#863: - name the Layer 3 helper set (renderWithProviders, createTestStore, createMockNavigation, getInitialState) - add a Test layout table (layer to directory) and name jestMockSetup.js as the central mock registry - name the RTK-slices safety net rationale (behavior, state-shape, action-type contract triple) for reducer tests - list the additional dev deps shipped by the PR (jest-circus, @jest/globals, @types/jest) - acknowledge clearLoadingLocksForTesting as the single Layer 1-3 production-code line - correct the path of the canonical companion docs in Future Possibilities #7 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
b90b94a to
448bfbf
Compare
Main RFC now treats phase 4 as an annex pointer rather than restating the full implementation. The five-item production-code list, the verification env, the criticality warning, and the wallet-creation walkthrough collapse into single-sentence summaries with anchor links into phase-4-e2e-deep-dive.md. Drawback 1 is reduced to a one-line classification of the five fixes (a11y win, three testing workarounds, one invisible) plus an annex link. Adds a new "Accessibility impact for end users" subsection answering whether the Phase 4 changes also benefit visually impaired users: - accessible=false on layout Views is a genuine VoiceOver win (the same iOS aggregation that breaks XCUITest collapses screen-reader focus into a single chunk; this fix restores per-element focus). - Pressable migration and flex-container layout are testing-only. - The custom ToggleSwitch carries accessibilityRole="switch", so VoiceOver announces it the same way the native control would. - testID props are invisible to end users. Same conclusion is also stated inline in the annex, at the end of the accessibility-tree fix, so a reader entering through the annex gets the same answer without bouncing back to the main RFC. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
tuliomir
added a commit
that referenced
this pull request
May 21, 2026
Adapts mobile RFC #110 to the Electron desktop wallet. Four-layer pyramid (unit, integration, component, E2E Playwright + Electron). Reference smoke PRs for Layers 1-3 then Layer 4 land first; feature-area PRs follow. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
Introduces a multi-layered automated test suite (unit, integration, component, E2E) for the Hathor Mobile Wallet. E2E framework is Maestro, chosen over Detox for LavaMoat/SES compatibility.
See rendered.