CSP blocks required script: symptoms, cause, and the test that catches it
A Content Security Policy change blocks a script the page needs.
CSP blocks required script is documented by 2 accepted public reports from 2 organisations, 2 of them published in the last 5 years.
- Likelihood: low (2 public reports in 5 years)
- Impact: medium (2 of 2 reports: availability)
Symptoms
User-visible
- The single-page app showed a blank page or an endless spinner on most reloads after an upgrade that enabled a nonce-based content security policy (a response header that lists which scripts and resources a page may load).[1]
- Some reloads worked and others failed on the same server and the same browser.[1]
- The blank page reproduced in two different desktop browsers.[1]
- Clicking the OAuth login button on the /login/ page had no effect after a container image upgrade.[2]
- A second user reported the same dead login button.[2]
Monitoring-visible
- The process kept running, and the health endpoint, login API and other APIs returned 200 while users saw a blank page.[1]
- No client or server error was visible, and an 11-point health-check script passed.[1]
- The Content-Security-Policy response header carried a nonce, while the rendered HTML contained no nonce attribute on the script tag.[1]
- The browser console showed a Content Security Policy error refusing to run an inline event handler under a script-src directive with strict-dynamic and a nonce.[2]
- The first signal of the login failure was a user report in the public issue tracker.[2]
Root causes
- stage: code The CSP nonce was generated with standard base64, and whenever the value contained a + or / character, the server's HTML template engine silently removed the nonce attribute from the script tag, so the policy blocked the inline script.[1]
- stage: code The previous release did not enable a CSP, so the upgrade switched on nonce handling in that deployment for the first time.[1]
- stage: third-party A new image added nonce attributes and a strict script-src policy, while the login page of an upstream web framework dependency still used an inline event handler that the policy did not allow.[2]
- stage: release-process The operators declared the upgrade successful after checking APIs only and learned about the blank pages from their users.[1]
Public examples
- [1]FileBrowser Quantum, 2026-09-23. After a deployment was upgraded from FileBrowser Quantum v2.0.0-beta to v2.0.8-beta, which enables a nonce-based Content Security Policy, the nonce attribute was often dropped from the inline script tag, so the browser blocked the script and the single-page app showed a blank page. primary [Bug] [Critical] Intermittent blank page in v2.0.8-beta: CSP nonce generated with base64.StdEncoding is silently stripped by html/template
- [2]Apache Superset, 2023-07-05. After moving to the latest Apache Superset docker image, which added nonce attributes and a strict script-src Content Security Policy, the browser refused an inline event handler on the login page and the OAuth login button did nothing. primary OAuth login broken with Content Security Policy
Test classes that catch it
| Test class | Stage | Limitation | Basis |
|---|---|---|---|
| End-to-end tests | pre-deploy | A single end-to-end page load can pass, because the nonce attribute was dropped only on loads where the random nonce contained a + or / character. | by design analysis |
| Security tests | pre-deploy | A check that reads only the Content-Security-Policy response header passes, because that header carried a valid nonce while the rendered HTML had lost it. | by design analysis |
| Synthetic monitoring | post-deploy | An API-level synthetic check passes, because the health endpoint and login API kept returning 200 while the browser refused to run the page script. | by design analysis |
Risk
- Likelihood: low (2 public reports in 5 years)
- Impact: medium (2 of 2 reports: availability)
| Accepted public reports | 2 |
|---|---|
| Published in the last 5 years | 2 |
| Impact stated: availability | 2 |
Pre-release checklist
- PR-01
- PR-02
- PR-03
- PR-04
- PR-05
- PR-06
- PR-07
First 30 minutes
- FM-01
- FM-02
- FM-03
- FM-04
- FM-05
- FM-06
- FM-07
Download the checklist
What catches this: catalogue entries
Listed because their own documentation or site names end-to-end tests, security tests, synthetic monitoring on the verification date. Alphabetical. Not a recommendation.
Tools whose documentation names these test classes
- Appium e2e source verified 2026-10-21
- Applitools Eyes e2e source verified 2026-10-21
- axe-core e2e source verified 2026-10-21
- behave e2e source verified 2026-10-21
- Burp Suite security source verified 2026-10-21
- Checkly synthetic source verified 2026-10-21 e2e source verified 2026-10-21
- Checkov security source verified 2026-10-21
- CodeceptJS e2e source verified 2026-10-21
- Cucumber e2e source verified 2026-10-21
- Cypress e2e source verified 2026-10-21
- Datadog Synthetic Monitoring synthetic source verified 2026-10-21 e2e source verified 2026-10-21
- Detox e2e source verified 2026-10-21
- Espresso e2e source verified 2026-10-21
- Firebase Test Lab e2e source verified 2026-10-21
- Gitleaks security source verified 2026-10-21
- Grafana Cloud Synthetic Monitoring synthetic source verified 2026-10-21
- Grafana k6 synthetic source verified 2026-10-21
- Karate e2e source verified 2026-10-21
- Katalon Studio e2e source verified 2026-10-21
- Kobiton e2e source verified 2026-10-21
- Maestro e2e source verified 2026-10-21
- Mocha e2e source verified 2026-10-21
- Nightwatch e2e source verified 2026-10-21
- Nuclei security source verified 2026-10-21
- Pa11y e2e source verified 2026-10-21
- Percy e2e source verified 2026-10-21
- Playwright e2e source verified 2026-10-21
- Postman synthetic source verified 2026-10-21
- Puppeteer e2e source verified 2026-10-21
- Robot Framework e2e source verified 2026-10-21
- RSpec e2e source verified 2026-10-21
- Sauce Labs e2e source verified 2026-10-21
- Schemathesis security source verified 2026-10-21
- Selenium e2e source verified 2026-10-21
- Semgrep security source verified 2026-10-21
- Serenity BDD e2e source verified 2026-10-21
- SonarQube security source verified 2026-10-21
- sqlmap security source verified 2026-10-21
- TestCafe e2e source verified 2026-10-21
- TestingBot e2e source verified 2026-10-21
- TestMu AI (formerly LambdaTest) e2e source verified 2026-10-21
- Trivy security source verified 2026-10-21
- TruffleHog security source verified 2026-10-21
- Uptime Kuma synthetic source verified 2026-10-21
- WebdriverIO e2e source verified 2026-10-21
- XCTest e2e source verified 2026-10-21
- Zed Attack Proxy (ZAP) security source verified 2026-10-21
Providers whose site names these test classes
- 2i e2e source verified 2026-10-21
- Abstracta security source verified 2026-10-21 e2e source verified 2026-10-21
- andagon people GmbH e2e source verified 2026-10-21
- Appmatics e2e source verified 2026-10-21
- AQA Masters security source verified 2026-10-21 e2e source verified 2026-10-21
- BreachLock security source verified 2026-10-21
- BugRaptors security source verified 2026-10-21 e2e source verified 2026-10-21
- Cleverix e2e source verified 2026-10-21 security source verified 2026-10-21
- Crestech Software Systems security source verified 2026-10-21 e2e source verified 2026-10-21
- Crowdar e2e source verified 2026-10-21
- CyStack security source verified 2026-10-21
- DeviQA security source verified 2026-10-21 e2e source verified 2026-10-21
- Elinext security source verified 2026-10-21 e2e source verified 2026-10-21
- Exactpro e2e source verified 2026-10-21
- Full Scale e2e source verified 2026-10-21
- Inmetrics e2e source verified 2026-10-21
- Invensis Technologies security source verified 2026-10-21 e2e source verified 2026-10-21
- iScale Solutions e2e source verified 2026-10-21
- Itekako e2e source verified 2026-10-21
- iValuePlus Services security source verified 2026-10-21 e2e source verified 2026-10-21
- Nimble Approach e2e source verified 2026-10-21 security source verified 2026-10-21
- Outpost QA e2e source verified 2026-10-21
- Packetlabs security source verified 2026-10-21
- Pentest Factory GmbH security source verified 2026-10-21
- PLATO e2e source verified 2026-10-21
- Polteq e2e source verified 2026-10-21
- Q-Centric GmbH e2e source verified 2026-10-21 security source verified 2026-10-21
- QA Madness e2e source verified 2026-10-21 security source verified 2026-10-21
- QA Mentor security source verified 2026-10-21 e2e source verified 2026-10-21
- QASource e2e source verified 2026-10-21
- QAwerk security source verified 2026-10-21 e2e source verified 2026-10-21
- Quality House e2e source verified 2026-10-21 security source verified 2026-10-21
- Quality Island security source verified 2026-10-21 e2e source verified 2026-10-21
- QualityKiosk Technologies e2e source verified 2026-10-21
- QualityLogic e2e source verified 2026-10-21
- Qualysec security source verified 2026-10-21
- Saigon Technology security source verified 2026-10-21
- Scalefocus e2e source verified 2026-10-21
- SHIFT ASIA security source verified 2026-10-21 e2e source verified 2026-10-21
- SimplyTest GmbH security source verified 2026-10-21 e2e source verified 2026-10-21
- Sofka Technologies e2e source verified 2026-10-21
- Soflab Technology security source verified 2026-10-21 e2e source verified 2026-10-21
- Software Secured security source verified 2026-10-21
- SQA - Software Quality Assurance S.A. e2e source verified 2026-10-21 security source verified 2026-10-21
- SunTec India e2e source verified 2026-10-21 security source verified 2026-10-21
- T2S Tecnologia e2e source verified 2026-10-21 security source verified 2026-10-21
- TestFort security source verified 2026-10-21 e2e source verified 2026-10-21
- Testhouse e2e source verified 2026-10-21 security source verified 2026-10-21
- Testing IT e2e source verified 2026-10-21
- TestMatick security source verified 2026-10-21 e2e source verified 2026-10-21
- Testrig Technologies security source verified 2026-10-21 e2e source verified 2026-10-21
- Testscenario e2e source verified 2026-10-21
- TestSolutions GmbH security source verified 2026-10-21 e2e source verified 2026-10-21
- THEY.dev e2e source verified 2026-10-21
- tiQtoQ e2e source verified 2026-10-21 security source verified 2026-10-21
- VTEST security source verified 2026-10-21 e2e source verified 2026-10-21
- WebDepend e2e source verified 2026-10-21
- Zoonou e2e source verified 2026-10-21 security source verified 2026-10-21
Only on this page
In report [1], every server-side signal stayed green while users saw a blank page. The process kept running, the health endpoint and APIs returned 200, and an 11-point health-check script passed. The operators declared the upgrade successful after checking APIs only and heard about the blank pages from users.
The fault was also intermittent. The nonce was dropped only when its random base64 value contained a + or / character, so some reloads worked on the same server and browser [1]. The reporter proposed a test that the rendered HTML contains the nonce [1]. A check of the response header alone passes, because the header always carried the nonce.
Related incidents
- Critical path broken in one browser A core flow fails in one browser or version after a build or polyfill change.
- Form submission silently fails A form submits without error but data is never stored after a validation or endpoint change.
- Localisation strings missing A release ships with missing or untranslated strings in one locale.
- Asset cache serves old bundle Users receive an old JavaScript bundle with a new API and the app errors.
- CORS policy blocks frontend A CORS change blocks the production frontend from calling its own API.
Questions
What causes CSP blocks required script?
In report [1], a base64 nonce containing + or / was silently stripped from the script tag by the template engine, so the policy blocked the script. In report [2], a new strict script-src policy blocked an inline event handler on a framework login page.
What are the symptoms of CSP blocks required script?
Users saw a blank page or an endless spinner on most reloads [1]. In report [2], the OAuth login button did nothing and the browser console showed a Content Security Policy error.
Why did tests not catch CSP blocks required script?
In report [1], the health endpoint and APIs returned 200 and an 11-point health-check script passed. The fault lives in the rendered HTML in the browser, which none of those checks loaded.
Which test class catches CSP blocks required script, and what does it miss?
End-to-end tests, security tests and synthetic monitoring carry the by-design label, because neither report names a test class. A single end-to-end page load can miss report [1], where only some reloads failed.
What should be checked before a release to prevent CSP blocks required script?
Item PR-03 compares the nonce attribute on every script tag with the nonce in the response header. Item PR-04 confirms the nonce generator never emits + or / characters.
Should a team roll back or fix forward when CSP blocks required script happens?
In report [2], rolling back to version 2.1.0 restored login. The interim workaround there was a CSP config that allowed unsafe-inline scripts, and a later framework release added nonce support.
Release Incident Playbook (2026). CSP blocks required script: symptoms, cause, and the test that catches it, content version 1.0.0. https://releasefailures.com/incidents/csp-blocks-required-script/. Accessed 2026-10-21.