The browser shows an online badge, but an API request through a proxy still fails. Or the page says offline and disables a harmless refresh even though the target can respond. These are different observations: a browser network hint, a target request and the application's recovery state.

This guide proposes an authorized staging test with small read-only fixtures. It reports no actual outage or completed compatibility result. Do not disconnect a shared production network to create the test.

A green browser connection hint remains separate from a target request that stops at an error gate, while a fresh verified response is needed to restore the application state

1. Define what each indicator proves

MDN explains that navigator.onLine uses browser and operating-system heuristics and can be unreliable; it is a hint rather than a reason to disable features by itself. A connected local network does not establish target availability.

MDN also warns that an online event does not determine whether a particular website is reachable. Do not mark the target recovered merely because that event fired.

Write separate fields for browser hint, observed target-request outcome and application recovery. Give each a timestamp and scope. A successful request to an unrelated public site proves little about the target API's authentication, route or current operation.

2. Build a fresh harmless target check

  1. Use an owned staging endpoint with a documented read-only response and a unique case marker.
  2. Define success as the expected status plus the matching fresh marker and required payload fields.
  3. Arrange the fixture's cache and service-worker behavior with the owner, so a local cached response is not mistaken for a new receiver observation.
  4. Record the browser hint, event sequence, outbound case ID and authorized receiver evidence.
  5. Set a small deadline and fixed attempt limit before running.

A general health endpoint may verify only its own handler. If the user task needs a different read-only operation, test a harmless representative of that operation separately. Do not claim whole-service health from one green response.

3. Keep the hint online while the target fails

On an isolated test route, leave the browser's network hint unchanged while the owned target fixture returns a controlled failure or becomes unavailable to that test route. Record what was actually induced; a server error is not the same as a failed connection.

Attempt the declared harmless read and verify the UI reports its observed failure instead of keeping a target-success badge merely because navigator.onLine is true. Preserve useful last-known data with its age where the design requires it; do not relabel stale data as freshly recovered.

Check the receiver's case record where available. If the browser cannot expose a response, classify the visible error at the available evidence level rather than inventing a status code or blaming the proxy without route evidence.

4. Check hint-driven UI without pretending to test the OS

In an owned application fixture, supply an offline hint to the UI while its target-read fixture remains reachable. Verify that the hint is explained and a documented safe user-initiated check remains available instead of the hint permanently locking the workflow.

A mocked property or dispatched event tests application handling, not a real operating-system connectivity transition. Label it accordingly. If a true browser/network transition is needed, use an isolated test environment and record the mechanism, browser and operating system; do not assume all tools affect these hints identically.

Keep write actions out of this fixture. Whether to queue or disable a business operation requires its own product contract; this test does not authorize automatic replay of a failed submission.

5. Require fresh evidence before recovery

Restore the target fixture, trigger one bounded read and require the current case marker before changing the application's target state to recovered. An online event can invite a check; it should not substitute for its result.

Use a controlled delayed-response case: hold an older failure, complete a newer successful check and then release the older result. Verify the UI follows its declared request-generation policy instead of overwriting the new state with stale evidence.

Repeat the transition a small fixed number of times. Confirm event listeners do not accumulate and launch multiple duplicate checks. Respect target retry guidance, prevent overlapping probes under the agreed policy and keep failures visible when the fixed budget is exhausted.

6. Compare baseline and proxy routes fairly

The 98IP dynamic residential IP page is relevant when selecting access for authorized browser-route checks. Confirm current access and account options on the API configuration page. Product access does not guarantee a browser hint or a destination's availability.

  • Fresh valid control: marker and required payload match.
  • Hint online, target fails: UI records target failure accurately.
  • Injected offline hint: safe declared user continuation remains usable.
  • Target restoration: recovery waits for a new successful check.
  • Delayed old result: stale evidence does not replace current state.
  • Repeated transitions: no duplicate listeners or unbounded probe loop.

These cases are unexecuted. Reset profiles independently, keeping browser, operating system, target fixture, credentials scope and cache policy fixed. Record route, hint, event times, case ID, result, response freshness and first state mismatch. Retain synthetic evidence only; never include credentials, cookies or unnecessary customer data.

FAQ and completion checklist

Does online mean this API works? No. Observe the scoped target operation.

Can a displayed cached page prove recovery? No. Establish the new check's freshness and receiver evidence.

  • Browser hint and target result are separate states.
  • Success requires a matching current fixture.
  • Mocked UI tests are distinguished from network transitions.
  • Recovery cannot be declared by an event alone.
  • Old results and repeated listeners are tested.
  • Reads are authorized and bounded, with no automatic write replay or untested availability claim.