Skip to content

chore(release): 1.1.0-rc.0 (SDKS-5327, SDKS-5436) - #71

Open
tsdamas wants to merge 16 commits into
mainfrom
1.1.0-rc.0
Open

tsdamas wants to merge 16 commits into
mainfrom
1.1.0-rc.0

Conversation

@tsdamas

@tsdamas tsdamas commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Summary

Release candidate for the 1.1.0 SDK drop. This PR migrates security scanning from the retired Mend GitHub App to orchestrated Mend CLI workflows, remediates transitive CVEs via dependency resolutions, makes rn-davinci publishable, and hardens the E2E suites (Detox on Android, XCUITest on iOS/BrowserStack) with new DaVinci hook coverage and session-isolation fixes.

Changes

Security scanning (Mend CLI migration)

  • Add three reusable sub-workflows wired into ci.yml, replacing the retired Mend GitHub App integration (SDKS-5436):
    • mend-prepare-workspace.yml — builds a pruned workspace containing only packages/* (the published SDKs) with a generated root manifest that preserves packageManager, engines, and resolutions, then re-resolves the real yarn.lock so scanned versions match what CI tests.
    • mend-sca-scan.yml — dependency scan of the pruned workspace; publishes severity counts, a badge, and the "Mend SCA Report" check run.
    • mend-sast-scan.yml — SAST + secrets scan with JSON report parsing and a "Mend SAST Report" check run.
  • Both scan workflows skip fork PRs
  • SAST raw output (which can contain matched secret values) is deliberately excluded from job summaries and check-run text; it is only available as a 1-day-retention artifact.
  • .whitesource: set reopenClosedIssues: true so closed dependency findings re-open when reintroduced.

Dependencies

  • Remediate transitive CVE findings: bump js-yaml resolution to 4.3.2 and add decode-uri-component at 0.5.0, with lockfile re-resolution.

E2E: new DaVinci hook coverage

  • Add PingTestRunner/e2e/use-davinci.test.ts (Detox) and UseDaVinciUITests.swift (XCUITest) covering the useDaVinci + useDaVinciForm hook API: form rendering, login via next(), and post-login token/userinfo/refresh/revoke/logout state transitions.
  • Extend UseDaVinciScenario.tsx: surface client-configuration errors through a use-davinci-error marker instead of tearing down the RN tree, keep a successReached panel visible after revoke()/logoutUser() clear the node, and add a -PING_AUTOSTART debug aid.

E2E: session isolation and stability

  • iOS AppDelegate: with the new -PING_CLEAR_STORAGE launch arg, wipe HTTP cookie stores, WKWebsiteDataStore, and keychain items before RN boots, so each launch starts without a stale SSO session (the SDK's persisted cookies previously let the server resume a prior interaction and return SuccessNode instead of the login form).
  • Rename DaVinci launch args to the PINGONE_* namespace across scenarios, Detox tests, and the iOS BrowserStack workflow; add the PINGONE_* secrets to browserstack-e2e-ios.yml and pass them into the XCUITest build payload.
  • Give every DaVinci submit button a label-derived testID (davinci-submit-{label}) so multi-button flows (Sign On / Register / Trouble) can be targeted precisely; the first submit keeps the shared davinci-submit-btn alias.
  • Detox fixes: noRetryArgs so retries re-run only failed suites, explicit detoxExpect re-assertions after every waitFor (BrowserStack derives verdicts from expect calls, not polling), 10s spacing between consecutive shared-account logins on Android, an Android-correct submit selector (uppercase button text breaks by.text('Sign On')), reloadReactNative in journey callback test setups, longer net timeouts, and explicit waits around first-call RSA key generation in device-id tests.
  • XCUITest fixes: new EnvFileLoader reads the PingTestRunner .env for local runs (process env still wins on BrowserStack), shared login-spacing helper, and tapWhenReady/label-based submit targeting.

CI / build reliability

  • Raise the BrowserStack Android e2e timeout (55 → 60 min), iOS e2e timeout (60 → 70 min), Gradle daemon heap for the Android prep job (2 GB → 4 GB), and the local gradle.properties heap to match.
  • Update AGENTS.md CI table entry for the new Mend CLI scan scope.

Docs

  • packages/external-idp/README.md: clarify native vs. browser fallback per orchestration type (Journey is native-only except Apple Sign-In on Android; DaVinci falls back to the browser when a native provider SDK is not linked).

Testing

  • yarn packages:build, lint, typecheck, and unit tests pass locally.
  • Mend workflows exercised on this PR (SCA + SAST check runs present).
  • Detox Android and XCUITest iOS suites validated against live DaVinci and Journey environments on BrowserStack, including the new use-davinci scenarios.

@tsdamas tsdamas added the wip Working in progress, do not review. label Sep 11, 2026
@coderabbitai

coderabbitai Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 378d5198-f85c-433b-92ef-a6d4709aeaec


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Sep 11, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 71.09%. Comparing base (b61a748) to head (6f9de93).

Additional details and impacted files
@@            Coverage Diff            @@
##               main      #71   +/-   ##
=========================================
  Coverage     71.09%   71.09%           
  Complexity      239      239           
=========================================
  Files           209      209           
  Lines         24592    24592           
  Branches       1175     1175           
=========================================
  Hits          17483    17483           
  Misses         6937     6937           
  Partials        172      172           
Flag Coverage Δ
android 16.04% <ø> (ø)
ios 80.97% <ø> (ø)
javascript 70.48% <ø> (ø)
Components Coverage Δ
Bridge glue 51.51% <ø> (ø)
Pure logic 80.86% <ø> (ø)

Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b61a748...6f9de93. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

github-actions Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://ForgeRock.github.io/ping-react-native-sdk/docs-preview/pr-71/

Built to branch gh-pages at 2026-09-22 03:41 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

@tsdamas tsdamas changed the title chore(release): 1.1.0-rc.0 defect fixes chore(release): 1.1.0-rc.0 Sep 16, 2026
Comment thread PingTestRunner/ios/PingTestRunner/AppDelegate.swift
/// store is cleared. HTTPCookieStorage and keychain deletion are synchronous;
/// WKWebsiteDataStore removal is asynchronous and gates the completion.
private static func clearAuthStorage(completion: @escaping () -> Void) {
HTTPCookieStorage.shared.removeCookies(since: Date.distantPast)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mend Code Security Check

New finding (1 of 1)

The Mend Code Security Check of your branch failed because of a Insecure Data Storage finding in this line.

SeverityVulnerability TypeCWEFileData FlowsDetected
MediumInsecure Data Storage

CWE-200

AppDelegate.swift:73

12026-09-16 11:48pm
Vulnerable Code

/// Wipes cookie stores and keychain items, invoking `completion` after every
/// store is cleared. HTTPCookieStorage and keychain deletion are synchronous;
/// WKWebsiteDataStore removal is asynchronous and gates the completion.
private static func clearAuthStorage(completion: @escaping () -> Void) {
HTTPCookieStorage.shared.removeCookies(since: Date.distantPast)

1 Data Flow/s detected

HTTPCookieStorage.shared.removeCookies(since: Date.distantPast)

Secure Code Warrior Training Material

● Training

   ▪ Secure Code Warrior Insecure Data Storage Training

● Videos

   ▪ Secure Code Warrior Insecure Data Storage Video 1

   ▪ Secure Code Warrior Insecure Data Storage Video 2

● Further Reading

   ▪ OWASP Top Ten 2017 A3: Sensitive Data Exposure

   ▪ OWASP Top Ten Proactive Controls 2018 C8: Protect Data Everywhere

   ▪ OWASP Top Ten 2021 A02: Cryptographic Failures

Suppress Finding

To suppress this finding as a acceptable risk, comment:

/mend code suppress acceptable-risk be921132-d876-4475-9fd3-e8fcc755b711 Optional Comment

To suppress this finding as a false positive, comment:

/mend code suppress false-positive be921132-d876-4475-9fd3-e8fcc755b711 Optional Comment
💬 Discuss Finding

Add context or questions for the security reviewer by commenting on this issue:

/mend comment Your Message

Your message will appear in the Mend Platform for the security team to review.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The flagged rule is CWE-200 ("exposes sensitive information to an actor not explicitly authorized"), which Mend pattern-matches against cookie-store APIs is a false-positive. Nothing is read, logged, transmitted, or persisted here- no data crosses to any actor. The call's entire purpose is the opposite of exposure: destroying stale SSO cookies before test flows.

@tsdamas tsdamas changed the title chore(release): 1.1.0-rc.0 chore(release): 1.1.0-rc.0 (SDKS-5327, SDKS-5436) Sep 22, 2026
@tsdamas tsdamas removed the wip Working in progress, do not review. label Sep 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant