Test experiments for DataPipe, for checking a deployment end to end. Published at https://jspsych.github.io/datapipe-testbed/.
- jsPsych page (
site/jspsych/) — jsPsych 8 with@jspsych-contrib/plugin-pipe, including incremental upload (trials staged as they happen, abandoned sessions recovered). Written exactly the way the plugin's docs tell researchers to write it, so it also checks that the documented pattern works. - Plain JavaScript page (
site/vanilla/) — no jsPsych, no plugin, no libraries. Every DataPipe call is a barefetch: condition assignment, the session endpoint, and the submission (optionally gzipped).
Both pages log every request and response on screen, so a run can be checked without DevTools — including on a phone, where flaky connections are easiest to reproduce.
- Create an experiment on the deployment you are testing — for the test deployment, sign in at https://datapipe-test.web.app — and switch data collection on.
- Open the testbed home page, enter the experiment ID, pick the options, and open a test.
- Keep the experiment's dashboard open alongside. The home page lists the scenarios to check and what each should look like.
Every setting is a URL parameter, so a test is a link you can share:
| Parameter | Pages | Default | Meaning |
|---|---|---|---|
experiment |
both | — | DataPipe experiment ID (required) |
base |
both | https://datapipe-test.web.app |
DataPipe deployment |
trials |
both | 20 |
Number of trials (1–500) |
format |
both | csv |
csv or json |
auto |
both | 0 |
1 advances trials automatically |
stream |
jsPsych | 1 |
Incremental upload on/off |
breaksave |
jsPsych | 0 |
1 makes the final submission fail on purpose |
session |
plain JS | 0 |
Call /api/session before starting |
condition |
plain JS | 0 |
Call /api/condition before starting |
compress |
plain JS | 1 |
Gzip the submission |
Nothing here is secret: DataPipe experiment IDs are public by design, and none is committed — they come from the URL. Do point tests at a test experiment: they send real data to real storage.
The streaming build of plugin-pipe is not published yet, so its browser
bundle is committed in site/vendor/plugin-pipe/, with
SOURCE.md recording the exact commit it
was built from. To rebuild it from a local checkout of jspsych-contrib:
scripts/refresh-plugin.sh ../jspsych-contribOnce plugin-pipe 0.7 is on npm, delete site/vendor/ and load it from the
CDN like jsPsych.
Pushing to main publishes site/ to GitHub Pages
(.github/workflows/pages.yml). There is no build step.