Enables iab to redirect calls to MockServer on E2E context #78
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.
Summary
Add native E2E request interception support for Android WebView to enable routing all network requests through the mock server during E2E tests.
Motivation
During E2E testing, API calls made from the in-app browser (WebView) were not being intercepted by the mock server. This is because the existing mock server implementation patches fetch and XMLHttpRequest in the React Native JavaScript context (shim.js), but WebView runs in a separate browser context with its own network stack.
This PR adds native-level request interception on Android using shouldInterceptRequest, which intercepts ALL network requests from the WebView (including page navigation, resources, and API calls) and routes them through the mock server proxy.
Changes
Android Native Code
RNCWebViewClient.java:RNCWebView.java:-Added setE2EMode() and setMockServerUrl() methods that forward to RNCWebViewClient
RNCWebViewManagerImpl.kt:RNCWebViewManager.java (oldarch & newarch):iOS Native Code
RNCWebViewImpl.h:RNCWebViewManager.mm:Usage
<WebView e2eMode={true} mockServerUrl="http://localhost:8000" // ... other props/>
When e2eMode is true and mockServerUrl is provided, the Android WebView will:
3 Return the proxied response to the WebView
Testing
Related
Consumer PR: MetaMask/metamask-mobile#25652