Today I was checking a correction inside a restricted online system. The change had to work for the person using it, but I also needed to confirm that the records visible to an administrator had not changed.
The user side passed. The right material opened, the expected action was available, and the media responded properly. Then my final administrator check returned an empty result.
That looked serious. It was also wrong.
I had changed from one user role to another inside the same browser session. The system was still carrying part of the earlier state, so the empty screen did not describe the underlying records. It described a confused session.
The correction passed in the user view


I started with the view that mattered most: what the intended user could actually reach and use. This was not a check of the editing screen. I opened the system with the user’s permissions and followed the same path that person would follow.
The content was visible. The action link was present. The media file answered the browser request. Those checks told me that the correction had reached the user-facing experience.
Still, a working front end was only one part of the job. A change can solve the visible problem and disturb records or permissions elsewhere. I needed a separate administrator readback before I could call the work complete.
My final check produced the wrong alarm


The first administrator readback showed no rows. If I had trusted that screen immediately, I would have reported that records had disappeared. I might even have started a rollback that was not needed.
I paused because the result did not fit the rest of the evidence. The earlier administrator check had found the records. My correction did not touch that data. The user verification also behaved normally. One empty table after a role switch was possible evidence, but it was not enough proof.
This is where automated testing can be misleading. A script can repeat the same browser state very accurately. If that state is contaminated by an earlier login, impersonation or permission change, the script repeats the confusion with confidence.
A clean admin session separated state from truth


I opened a fresh browser context and signed in directly with the administrator role. A browser context is simply a clean session with its own cookies and login state. It does not inherit the identity used in the previous check.
The records appeared. Their state matched the earlier count, and the user-facing correction still passed. The failed check had come from the reused session, not from lost data.
That distinction mattered. Repeating the test in the same session would only have repeated the same uncertainty. Starting clean gave me an independent readback.
I now reset identity before sensitive readback


When a test involves different permission levels, I no longer treat a role switch as the same thing as a fresh login. I use one session for the user journey and another for the administrator verification.
My check is simple. First, test what the user can see and do. Second, open a clean administrator session. Third, read the protected records again. Finally, compare the before and after state before deciding whether the change is safe.
The lesson is not that every failed check should be ignored. It is that a failed check must be tested on its own. When the result conflicts with the rest of the evidence, verify the session before blaming the system.
