When Sorry Cypress shows a test but no screenshot or video, trace the artifact through five separate stages: Cypress must create the file, Director must issue a valid signed S3 URL, the runner must upload to that URL before it expires, S3 must accept and retain the object, and the dashboard browser must be able to read it. Check those stages in that order. This prevents an S3 policy problem from being confused with a disabled Cypress video setting, a wrong Director URL, or a database failure.
How the Sorry Cypress upload path works
The upload is not a direct Cypress-to-bucket login. The normal sequence is:
- Cypress finishes a test and creates a screenshot or video locally.
- The Cypress runner reports the result to Sorry Cypress Director.
- Director creates a signed S3 upload URL and returns it to the runner.
- The runner uploads the file directly to that URL.
- Director stores the corresponding read URL, and the dashboard later requests the object.
Director therefore needs storage configuration, while the runner needs network access to the exact signed URL. A valid AWS access key alone does not prove that the upload can work: changing the signed URL’s host, port, path, or query string invalidates the request, and a URL that expires before a large video finishes will fail.
1. Prove that Cypress created an artifact
Run in headed or headless run mode
Cypress records videos during cypress run, not cypress open. In your Cypress configuration, enable video recording:
#1 Best Overall
- High-capacity add-on storage.Specific uses: Business, personal
- Fast data transfers
- Plug-and-play ready for Windows PCs
- WD quality inside and out
const { defineConfig } = require('cypress')
module.exports = defineConfig({
video: true,
screenshotOnRunFailure: true,
e2e: {
baseUrl: 'https://example.test'
}
})
The video option is disabled by default. Failure screenshots are controlled by screenshotOnRunFailure; a passing test will not automatically produce a failure screenshot. Run:
npx cypress run
Before each run, Cypress normally clears its screenshots and videos directories. If another process expects files from an earlier run, review trashAssetsBeforeRuns. First inspect the runner’s local output. If no file exists locally, S3 and Director cannot upload it.
Separate screenshots from videos
- No video but screenshots work: check
video: true, usecypress run, and verify the recording is not disabled by a CI-specific configuration. - No failure screenshot: confirm the test actually fails and that
screenshotOnRunFailureremains enabled. - Neither artifact exists: enable runner diagnostics and check that the test is reaching its normal completion path.
2. Select the S3 storage driver in Director
Set the Director storage driver to the S3 implementation:
SCREENSHOTS_DRIVER=../screenshots/s3.driver
Sorry Cypress also ships dummy, MinIO, and Azure drivers. The dummy driver intentionally stores nothing, so a deployment accidentally using it can show successful test results with an empty artifact area. Restart Director after changing the environment and confirm the running container has the new value, not merely the value in an unused shell or compose file.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →3. Check every S3-related setting
Review the values inside the Director container or task definition, including spelling and whitespace:
Rank #2
- Low Cost Professional Grade Network Attached Storage - Optimized to organize, store, share, and back up your important and everyday files.
- Purpose-Built for Data Protection – Secure NAS with 256-bit drive encryption, a closed system, and flexible replication and backup features to keep your data safe.
- Fast Data Transfers – Native 2.5GbE port for high speed file transfers with no cable upgrade needed.
- Reliable Storage with Effortless Setup – Hard drives included and RAID pre-configured for hassle-free, out-of-the-box protection, and can be changed to other RAID modes to best suit your needs.
- Cloud Integration – Sync with Amazon S3, Dropbox, Azure and OneDrive to create a hybrid cloud for extra data security, cost savings, and flexible scalability.
SCREENSHOTS_DRIVER=../screenshots/s3.driver
AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key
S3_BUCKET=your-bucket
S3_REGION=us-east-1
S3_ACL=public-read
S3_READ_URL_PREFIX=https://your-bucket.s3.amazonaws.com/
S3_IMAGE_KEY_PREFIX=screenshots/
S3_VIDEO_KEY_PREFIX=videos/
UPLOAD_EXPIRY_SECONDS=90
The documented UPLOAD_EXPIRY_SECONDS default is 90 seconds. Treat it as a validity window, not a guaranteed upload duration: a slow runner, large video, proxy retry, or queue delay can consume it. Increase the value only after considering the exposure of a longer-lived signed URL. Keep the bucket, region, and endpoint consistent; a region mismatch can produce redirects or signatures that fail.
Credentials and permissions
Use credentials that can create the required objects in the configured bucket and prefix, and that can apply the selected ACL. Avoid testing with credentials from a different AWS account or region. If your organization blocks ACLs, public-read will conflict with that policy; choose an intentional private-access design instead of changing one setting at random.
Prefixes and read URLs
S3_IMAGE_KEY_PREFIX and S3_VIDEO_KEY_PREFIX determine where objects are written. The read URL prefix must point to the same bucket and addressing style used by your policy and browser. A successful PUT to one key does not help if Director later constructs a URL for another key.
Recommended Free Tools
4. Trace the signed URL from Director to the runner
Inspect Director logs and its response to the runner. You need to establish three facts:
- Director received the result request.
- Director generated and returned an S3 signed upload URL.
- The runner reached that URL and completed the upload before expiry.
Do not copy a signed URL into a rewritten hostname, add a different port, remove query parameters, or route it through a URL shortener. Signature validation covers those details. Test reachability from the Cypress runner itself, not only from your laptop. Corporate proxies, private subnets, DNS split-horizon, TLS inspection, and egress firewalls commonly make the runner’s network different from the dashboard’s network.
Rank #3
- Low Cost Professional Grade Network Attached Storage - Optimized to organize, store, share, and back up your important and everyday files.
- Purpose-Built for Data Protection – Secure NAS with 256-bit drive encryption, a closed system, and flexible replication and backup features to keep your data safe.
- Fast Data Transfers – Native 2.5GbE port for high speed file transfers with no cable upgrade needed.
- Reliable Storage with Effortless Setup – Hard drives included and RAID pre-configured for hassle-free, out-of-the-box protection, and can be changed to other RAID modes to best suit your needs.
- Cloud Integration – Sync with Amazon S3, Dropbox, Azure and OneDrive to create a hybrid cloud for extra data security, cost savings, and flexible scalability.
For a large video, compare the upload start and finish times with the URL’s expiry. A timeout near the expiry boundary points to network throughput or an overly short validity window; an immediate 403 usually points to a signature, region, ACL, or policy mismatch.
5. Make the bucket policy match your privacy model
Public-read objects with restricted bucket controls
The documented Sorry Cypress private-bucket pattern uses public-read object ACLs while restricting who can use the bucket. Its Public Access Block values are:
| Setting | Value |
|---|---|
block_public_acls |
false |
block_public_policy |
true |
ignore_public_acls |
false |
restrict_public_buckets |
true |
Pair this with a bucket policy restricting downloads by source IP or private VPC. If you use CIDR conditions, include the networks where dashboard users’ browsers originate. Runner upload reachability and browser download reachability are separate tests.
Fully private objects
If your security standard forbids public-read ACLs, design a private-object read path deliberately: compatible bucket policy, identity or presigned GET access, and a Director read URL that browsers can actually use. Do not leave S3_ACL=public-read in place while simultaneously enabling controls that reject public ACLs.
Retention and encryption
The advanced AWS template documents a seven-day default screenshot lifecycle setting and optional KMS encryption. These are deployment defaults, not guarantees for every installation. Set retention to match debugging and compliance needs; shorter retention reduces storage cost but can remove evidence before an investigation is complete.
Rank #4
- Blazing fast NVMe technology with speeds of up to 1050MB/s and write speeds of up to 1000MB/s. Based on read speed unless otherwise stated. As used for transfer rate, 1 MB/s = one million bytes per second. Based on internal testing; performance may vary depending upon host device, usage conditions, drive capacity, and other factors.
- Password enabled 256-bit AES hardware encryption
- Shock and vibration resistant. Drop resistant up to 6.5ft (1.98m)
- Cross Compatible USB 3.2 Gen-2 and USB-C (USB-A for older systems)
6. Verify AWS and Sorry Cypress deployment wiring
The basic CloudFormation deployment provisions Sorry Cypress on ECS, including the dashboard, API, Director, S3 bucket, and CloudWatch log groups. Reconfigure Cypress with the Director URL generated for that deployment. A wrong, stale, or unreachable Director URL can leave the dashboard empty even when an independent S3 test succeeds.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsCheck that the dashboard, API, and Director point to the same deployment and database. A browser may load the dashboard shell while API calls fail, producing an apparently empty project. Verify service discovery, security groups, load-balancer routes, and any TLS termination between the runner and Director.
7. Read the right logs
Cypress runner
DEBUG=cypress:server:* npx cypress run
Look for artifact creation, the Director request, the returned upload URL, DNS or TLS errors, HTTP status codes, and upload completion.
Director and API
Look for incoming result requests, signed-URL generation, AWS errors, database connectivity, authentication failures, and request timeouts. A missing signed URL is a Director or configuration problem; a signed URL followed by a runner-side failure is usually network, expiry, or S3 policy.
Dashboard browser
Use the browser’s network panel to inspect the API response and the object GET. Distinguish an API error from an object error: the former indicates service or database wiring, while the latter indicates read URL, bucket policy, ACL, CORS, or browser network access.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Best Value
- Low Cost Professional Grade Network Attached Storage - Optimized to organize, store, share, and back up your important and everyday files.
- Purpose-Built for Data Protection – Secure NAS with 256-bit drive encryption, a closed system, and flexible replication and backup features to keep your data safe.
- Fast Data Transfers – Native 2.5GbE port for high speed file transfers with no cable upgrade needed.
- Reliable Storage with Effortless Setup – Hard drives included and RAID pre-configured for hassle-free, out-of-the-box protection, and can be changed to other RAID modes to best suit your needs.
- Cloud Integration – Sync with Amazon S3, Dropbox, Azure and OneDrive to create a hybrid cloud for extra data security, cost savings, and flexible scalability.
Symptom-to-fix checklist
| Symptom | Most likely stage | What to check |
|---|---|---|
| No local file | Cypress | cypress run, video: true, failure setting, and asset cleanup |
| No signed URL in Director logs | Director | S3 driver, credentials, bucket, region, and request to the correct Director URL |
| Signed URL, immediate 403 | S3/signature | Do not alter URL; verify region, ACL, policy, clock, and endpoint |
| Upload times out | Runner network/expiry | Egress, proxy, DNS, file size, throughput, and expiry window |
| Upload succeeds, dashboard image is 403 | Browser read | Read prefix, object ACL, bucket policy, CIDR/VPC rules, and CORS |
| Dashboard has no test at all | Director/API/database | Director URL, API route, authentication, database, and service logs |
Performance, reliability, and cost decisions
- Expiry: Longer signed-URL windows tolerate slow uploads but increase the time a leaked URL can be used. Set a value appropriate to your largest artifact and network, then monitor failures near expiration.
- Network placement: Keep runners close to the S3 region when practical, but still test the exact public or private endpoint required by the signed URL.
- Retention: Lifecycle deletion limits storage cost; the advanced template’s seven-day value is only a default.
- Privacy: Public-read ACLs are simple for dashboard browsers but require restrictive bucket controls. Private objects require a working authenticated or presigned read design.
- Alternative drivers: MinIO and Azure are supported alternatives, but changing drivers changes endpoints, signing behavior, credentials, and network checks. AWS S3 is the documented native path.
Or skip the browser setup
If your requirement is simply to capture a clean website image or PDF rather than archive Cypress run artifacts, ScreenshotNeo provides a one-request API. It removes cookie banners, newsletter popups, and chat widgets before capture; bot checks, blank pages, failed loads, and cache hits are not billed. Its MCP server lets Claude, Cursor, or another MCP client call take_screenshot, get_page_info, and capture_pdf.
See the complete parameter reference in the ScreenshotNeo documentation. cURL:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Python:
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
Node.js:
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
The Free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. Create a free ScreenshotNeo account.
FAQ
Why do screenshots upload while videos do not?
Video recording is independently controlled and disabled by default. Confirm video: true, run with cypress run, and then investigate upload size, throughput, and URL expiry.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallCan I test the signed URL with a different URL?
No. The signed host, path, port, and query string are part of the signature. Test the returned URL exactly as Director supplied it, from the runner network.
Does a successful S3 PUT prove the dashboard is fixed?
No. The dashboard performs a later read through the stored object URL. Read policy, ACL, CIDR restrictions, CORS, and API or database wiring can still prevent display.
Should I use the dummy driver for a quick test?
Only when intentionally testing the rest of the pipeline without storage. It stores nothing, so it cannot validate screenshot or video persistence.
The Bottom Line
Find the first broken stage—Cypress file creation, Director signing, runner upload, S3 acceptance, or browser read—then fix that stage without changing the others. This sequence resolves most “empty dashboard” cases faster than repeatedly rotating AWS keys.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

