Skip to content

Codex/multi profile#41

Open
tifroz wants to merge 12 commits intoskiptools:mainfrom
tifroz:codex/multi-profile
Open

Codex/multi profile#41
tifroz wants to merge 12 commits intoskiptools:mainfrom
tifroz:codex/multi-profile

Conversation

@tifroz
Copy link
Contributor

@tifroz tifroz commented Mar 12, 2026

  • Added first-class WebProfile support (.default / .named(String)) and WebProfileError handling across WebEngineConfiguration and runtime operations.
  • Implemented per-profile storage behavior:
    • iOS: named profiles map to dedicated WKWebsiteDataStore instances.
    • Android: named profiles use AndroidX WebKit multi-profile APIs with runtime gating (MULTI_PROFILE) and explicit failure when unsupported/invalid (no silent fallback).
  • Spawned children inherit the parent profile by default

Skip Pull Request Checklist:

  • REQUIRED: I have signed the Contributor Agreement
  • REQUIRED: I have tested my change locally with swift test
  • OPTIONAL: I have tested my change on an iOS simulator or device
  • OPTIONAL: I have tested my change on an Android emulator or device

  • AI was used to generate or assist with generating this PR. Please specify below how you used AI to help you, and what steps you have taken to manually verify the changes.

Codex-generated code under supervision, tested from a native sandbox app on iOS + Android


@cla-bot cla-bot bot added the cla-signed label Mar 12, 2026
tifroz added 10 commits March 12, 2026 12:35
…g androidTest

Added a Kotlin @BeforeClass hook via SKIP INSERT in SkipWebTests.swift (line 16) to ensure Build.FINGERPRINT is set when missing.
Implemented the Robolectric call via reflection (Class.forName("org.robolectric.shadows.ShadowBuild")) so the generated code compiles in both unit-test and instrumented-test source sets.
This prevents Compose test initialization crashes in Robolectric (Build.FINGERPRINT == null) while avoiding direct org.robolectric compile-time dependency in androidTest.
…dependent tests when isRobolectric == true, and to skip before calling those APIs.
…or failures

Wrap rect/width snapshot capture in a timeout guard and skip only transient simulator-side failures (WKErrorDomain Code=1 / timeout) seen under CI load, while preserving normal assertions when snapshots succeed.
… propagation on slower or noisy CI simulators, causing intermittent false negatives.

Add a bounded polling helper (awaitCookieHeaderContains) and use it in:
- testIOSNamedProfileIsolatesCookiesAcrossDifferentProfiles
- testIOSNamedProfileSharesCookiesAcrossEnginesWithSameIdentifier

Behavioral intent is unchanged:
- still requires cookie presence in the expected profile
- still fails on cross-profile leakage
- now includes clearer assertion context (observed headers) for CI diagnostics
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant