TROUBLESHOOTING

Let’s work out what broke.

Find the message you’re seeing, understand the likely cause, and try the next step. These notes cover the local labs and their optional Docker and CI tracks.

8 TROUBLESHOOTING NOTES

TESTSThe starter tests fail with 200 instead of 403+

Likely cause

The starter deliberately has no ownership guard. Bob receives Alice’s record.

What to try

In app.mjs, compare record.owner with the authenticated user before the 200 response. Return 403 for a mismatch, then rerun node --test security.test.mjs. Expect five passes.

Back to the related lab →
SETUPnode is not recognized / command not found+

Likely cause

Node.js is missing from the terminal’s PATH, or the terminal was opened before installation.

What to try

Install Node.js 24 from nodejs.org, reopen the terminal, and run node --version. This fixture needs no npm install. Open a terminal inside the extracted starter folder.

Back to the related lab →
SETUPCannot find module or test file+

Likely cause

The command is running from a different folder, often the outer ZIP extraction folder.

What to try

Locate app.mjs and security.test.mjs, change your terminal to that folder, and run node --test security.test.mjs. Both files must sit together.

Back to the related lab →
CONTAINERDocker cannot connect to its daemon+

Likely cause

The Docker CLI exists but the Docker engine is not running or the selected context is unavailable.

What to try

Start your Docker engine and run docker info. If Docker is unavailable, complete labs 02, 04, 05, and 06 using Node directly. Do not disable tests to get around a failed build.

Back to the related lab →
LOCAL RELEASEEADDRINUSE: port 3000 is already in use+

Likely cause

A previous fixture or another local service already owns this port.

What to try

Stop the fixture you started with Ctrl+C, or stop the opsrung-lab container. Avoid stopping unrelated services. Use one fixture instance at a time, then retry node app.mjs.

Back to the related lab →
ACCESS CONTROLThe health check passes, but Bob still gets 200+

Likely cause

Availability is working, but the authorization defect remains, or an old server instance is still running.

What to try

Stop the fixture, run all five tests against the edited files, and restart it. If using Docker, rebuild the image after the fix and recreate the container from that image.

Back to the related lab →
CI POLICYThe workflow is green but merges are not blocked+

Likely cause

A workflow result alone is not a mandatory merge rule.

What to try

Configure repository rules to require the security-tests check. Check that the workflow runs on pull requests and that the required check name matches. No repository settings are changed by this website.

Back to the related lab →
BROWSERMy learning progress disappeared+

Likely cause

Progress belongs to this browser and this site origin. Private browsing, clearing storage, or switching between localhost and 127.0.0.1 can create a different history.

What to try

Use the same browser and http://127.0.0.1:4317. The site has no account or server synchronization. You can revisit any lab and mark the local steps complete again.

Back to the related lab →