Final mobile sdk fixes#281
Closed
Alex Freas (akfreas) wants to merge 65 commits into
Closed
Conversation
…tate propagates before the call returns
…re-sort doesn't misroute the coordinate-click fallback
…o Compose fling settles before the find-and-check
… sortAudiences reorders don't reuse Compose slots and route audience-toggle clicks to the wrong audience
…accessibility tree after the panel's sortAudiences-driven re-sort
… clause) so override toggles don't reorder the list and race the Android accessibility tree
…via sdk.page in the demo app so the override interceptor can be exercised end-to-end from Detox
…ate-unqualified-audience, per-variant reset, refresh-button override persistence, and destroy/remount override clearing
…reviewPanelOverridesTests XCUITest suite so the JS-bridge proof covers the new override surface
…ofile and live-updates context in the live-updates demo screen and main app so the displayed state reflects the real SDK and clearProfileState test isolation holds
…ify and assert waitForTextChangeById on sections that should re-resolve and waitForTextEqualsById on sections that should stay locked so the assertions actually exercise SDK variant updates
…aunch after asserting baseline so each test proves the SDK swaps the same entry to its variant and the unidentified baseline was a real audience decision rather than a no-op fall-through
…d at the first event and assert it is unchanged at the next event so the stable-viewId and pause/resume tests prove cycle stability instead of reading a single overwritten value
…ine cycle and relaunch so each test gates on the SDK resolving the identified nested variant rather than on static text and local-state buttons that pass against a no-op SDK
…r the identified relaunch since App.tsx now derives the identify/reset control from the SDK profile so a rehydrated identified app no longer shows identify-button
…tended-view-tracking, live-updates, and offline-behavior Detox suites so the platform-agnostic contract reflects the new identify/relaunch, viewId-stability, and entry-id text-change assertions
…udocode contracts so each iOS test mirrors the hardened RN assertions, adding a waitForTextChange helper and aligning element identifiers with the shared contract
… local view state so a rehydrated identified profile shows the reset button after a cold start and the control only flips once identify has resolved and persisted
… than the baseline so identified users recurse into the variant's nested children, and expose entry-text-<id> accessibility identifiers on nested entry text
…m component-stats-<id> to entry-stats-<id> to match the shared pseudocode contract
…n to *-optimization and wire the simulate-preview-panel control to client.setPreviewPanelOpen so the panel drives live-update mode
…ested identifiers such as entry-text-<id> stay individually queryable instead of being collapsed and overridden by the wrapper identifier
…resume so a still-visible element starts a fresh tracking cycle after the app foregrounds without waiting for an external geometry callback
…e depth so variant nested children under the nt_experiences chain are fully expanded, and stop PreviewPanelOverridesTests relaunching with a stale --reset argument that wiped the identified profile
…n iOS optimized entries so an open preview panel forces live updates even on a component configured with liveUpdates false
…ntrolled scrolling so the dwell and lifecycle timing assertions are deterministic, adding scroll helpers and a content-entry card-height constant
…with a comment explaining it is the Equatable conformance for SwiftUI removeDuplicates, not a duplicate of core's change determination
…android-zipline-bridge package directory to android-quickjs-bridge and the ZiplineContextManager Kotlin class to QuickJsContextManager, dropping the dead app.cash.zipline ProGuard keep rule, since the runtime engine is QuickJS and the project has no Zipline dependency
…ful/optimization-js-bridge under packages/universal, building a single TypeScript source into per-platform UMD bundles that differ only in the analytics library.name, and remove the duplicated ios-jsc-bridge and android-quickjs-bridge packages
… @contentful/optimization-js-bridge package, keeping the iOS and Android native E2E filters triggering on bridge changes after the move into packages/universal
…aged stops reformatting the minified artifact, and restore optimization-android-bridge.umd.js to its minified build output
…lient so the Kotlin SDK exposes the custom-flag and merge-tag bridge methods that iOS already has
…ewTrackingController resume so a still-visible element restarts a tracking cycle after the app returns to the foreground
…s value instead of waiting for an identified profile, so non-live components freeze correctly and ignore later live-update emissions
…e is available so a flag-view component event is emitted, matching the iOS app
…xt entry fields through a new RichText helper backed by the SDK getMergeTagValue method
…ant UI tests instead of asserting on it immediately
…swipes and a fixed content-entry card height so entries dwell and scroll predictably
…rce-stop and relaunch the app without killing the instrumentation runner
…mulate button so default and locked sections switch to live updates while it is open
…ract, renaming cases and replacing fixed sleeps with explicit element waits
…eact Native Android E2E run so tests never bundle stale packaged JS
… to 180dp pushed the analytics section off-screen and broke UI tests that read it without scrolling
…f from AnalyticsEventDisplay so the one-shot flag-view event emitted by subscribeToFlag is captured
…I event-store collector that subscribes shortly after startup still receives the one-shot flag-view event
…irror the iOS XCUITest suite, porting momentum-free controlled-scroll helpers and a manual scroll-to-element loop so dwell and lifecycle assertions are deterministic
…Object2 handle that goes stale mid-recomposition is re-queried instead of crashing the test
…omentum scrolls so a transiting entry never dwells long enough to start a spurious view-tracking cycle, reserving momentum-free scrolling for precise positioning
…so visibility callbacks sample a jiggle, scroll view-id and duration stats on-screen before reading them, and dwell before the navigation-unmount test so its cycle is past threshold
…ng entries never dwell, and run the cycle-reset jiggle momentum-free so the SDK samples the entry crossing the tracked band
…lumn instead of a LazyColumn so every entry and analytics stat stays composed and readable without scrolling, mirroring the iOS reference app and removing view-tracking cycle disruption from stat reads
…-out and back instead of a tiny jiggle, since only a full scroll-out reliably crosses the view-tracking visibility threshold
… below-the-fold entry scenario cannot be constructed on the emulator viewport, leaving that shared behavior covered by the iOS suite
…ne case, since reading view-tracking stats requires UiAutomator scrolling that disturbs the cycle under measurement, leaving the behavior covered by the iOS XCUITest suite
Wiz Scan Summary
To detect these findings earlier in the dev lifecycle, try using Wiz Code VS Code Extension. |
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.
No description provided.