Squash TM Configuration — Getting Started Guide¶
This guide describes the only two manual steps to perform in Squash TM
after the first automatic deployment via perfshop-squash-seed.
The seed automatically configures: project, GitLab SCM, automation server, workflow, and tags. Only the automation server's RSA token needs to be entered manually.
Synology NAS specifics¶
The Synology NAS DSM 7 does not support
seccomp— nodocker buildis possible. The productiondocker-compose.ymluses pre-built images: - Application images: from the GitLab registry -perfshop-test-runnerimage: built on Windows and loaded viadocker load
# Build on Windows
cd test-runner
docker build --no-cache -t perfshop-test-runner:latest .
docker save perfshop-test-runner:latest -o perfshop-test-runner-latest.tar
# Load on the NAS
docker load -i /volume4/docker-speed/perfshop/perfshop-test-runner-latest.tar
docker compose up -d perfshop-test-runner
The docker-compose.desktop.yml and docker-compose.build.yml compose files build everything locally — no external images required.
Prerequisites¶
The following services must be started and healthy:
| Service | Expected status |
|---|---|
perfshop-testmgmt |
healthy |
perfshop-orchestrator |
Up |
perfshop-test-runner |
Up |
Access URLs by environment¶
| Environment | Squash TM URL |
|---|---|
| NAS prod | https://perfshop-squash.perfshop.io/squash |
| Docker Desktop / local build | http://localhost:9086/squash |
Login: admin / perfshop
What the seed configures automatically¶
On the first docker compose up, perfshop-squash-seed configures:
- ✅ PerfShop QA project
- ✅ PerfShop GitLab SCM server → repository
perfshop-tests(branchmain) - ✅ PerfShop Orchestrator automation server with the correct RSA RS512 token
- ✅ Workflow
Squash simple, technologyRobot Framework, tagslinux/robotframework
Step 1 — Check the automation server (mandatory)¶
⚠️ The seed configures the automation server with the pre-configured RSA token. If the token has been lost or the DB was reset, it must be re-entered.
- Administration → Automation servers → PerfShop Orchestrator
- Check that the Token field contains a token starting with
eyJhbGciOiJSUzUxMiI
If the field is empty or contains a different token:
| Field | Value |
|---|---|
| Authentication protocol | token authentication |
| Token | RSA RS512 token below |
eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzcXVhc2ggb3JjaGVzdHJhdG9yIiwic3ViIjoic3F1YXNoLXRtIn0.kGOOzOetXc8kRCekQnzwbZ58A38SWFI99fQUQ6ys_eWqH7o1iSfp9xEIdRMTAPOtqNxK8LFwMmj4DlSCT5bB-Hjdi1wP5lyW1408FYfV3pA-ut6mQAJkrOjiRHBs3WwasUhMhwoPvWm5R8u960XQQJbL7e_BWogZCGL6Oct-HMnjevLji1PF-33i15DMdTfhdg0dP-2N2ZeLoRWWnFXXJ0LxQ5Hx13qLZ2o94hlbCoIVAClMpgqvg-saHJY7ym0Zm8Qv76PJcKONuocek_nTRgmRl4XuEH8_WWZShtkPiDEOHZDSctUkjIAi460ka1U4_WZHCIjHtJkbStxDQ-TuXymB7MmwSuKFFMCYGP8-O4PVreGtOru9Pi4ZP6IcdO8zPTOkKTUIYAXR6ckf86uM3WJ0CCEMHOgGe6ynZVOyqfWczTiQB_KPuntIJGSCcXN9YMBejk5OpGPwWHOhfC-m0vZJSp_hZrBPDBhBoJfuwEnVevpud-IdeprmW9ZM5qa4zKtQnVfrgxDDQDDAfLtpcPqi5vxEIcly2pDNQvYahAYzL48O6bWbxzCwFYodsZ0D3GbWHMzoBoIEOZAGdQ_lr0v5vom0vj2qSbjObz1KPcMZUA3LmCZ35aPXcFilqDHUSDQ8BDrAZ1F0T0sE18b2qLwyd1XlJ4lv6zx1ulYTYXE
⚠️ RSA RS512 token only — algorithm
eyJhbGciOiJSUzUxMiI❌ Never use the personal HS512 token (
eyJhbGciOiJIUzUxMiJ9) That token does not work for the automation server.
- Save
Step 2 — Check the available environment¶
Administration → Projects → PerfShop QA → Available environments section:
If the entry is missing: check that perfshop-test-runner is started.
Create an automated test case (CT-001)¶
The PerfShop QA project is created by the seed. The test cases still need to be created.
- Test cases space → New test case
| Field | Value |
|---|---|
| Name | CT-001 API smoke test |
| Nature | Automated |
- Automation tab:
| Field | Value |
|---|---|
| Technology | Robot Framework |
| Script reference | perfshop-tests/smoke-test.robot |
| Automation status | Automated |
| Eligibility | Eligible |
⚠️ Reference format:
repo_name/file.robot— no spaces around the/✅ Correct:
perfshop-tests/smoke-test.robot❌ Incorrect:perfshop-tests / smoke-test.robot
Run the test¶
- Campaigns space → New campaign:
Smoke test campaign - New iteration → Add test cases → select
CT-001 - Click Run automatically
Expected result in the orchestrator logs:
Scripts available in perfshop-tests¶
| File | Technology | Description |
|---|---|---|
smoke-test.robot |
Robot Framework | Checks that the /api/products API responds (HTTP 200) |
CT-002-prix-coherence.robot |
Robot Framework + Selenium | Checks price consistency between catalog and cart |
test_prix_panier.py |
pytest | Price consistency via direct API |
The scripts read their URLs from /etc/environment inside the test-runner container:
| Variable | Prod NAS | Local (desktop/build) |
|---|---|---|
PUBLIC_API_URL |
https://perfshop-api.perfshop.io |
http://perfshop-app:8080 |
PERFSHOP_FRONTEND_URL |
https://perfshop.perfshop.io |
http://perfshop-frontend |
JWT architecture — quick reference¶
Squash TM ──RSA RS512 token──► Orchestrator
(verified via trusted_key.pub)
Orchestrator ──HS512 JWT─────► Squash TM API
(signed with squash.rest-api.jwt.secret)
SQUASH_REST_API_JWT_SECRET is absent from the orchestrator compose — expected native behavior.
Common issues¶
The specified token does not grant access to the requested resources¶
The token in "Automation servers → Token" is the personal HS512 (eyJhbGciOiJIUzUxMiJ9).
→ Replace it with the RSA RS512 token (eyJhbGciOiJSUzUxMiI) documented above.
Invalid algorithm while verifying token¶
The trusted_key.pub is not mounted in the orchestrator or does not match the private key.
→ Check that squash-orchestrator/trusted_key.pub is present in the repo and mounted in the container.
File or directory does not exist¶
The script reference contains spaces: perfshop-tests / smoke-test.robot
→ Fix to perfshop-tests/smoke-test.robot
Environment missing or not IDLE¶
The perfshop-test-runner container is not started or the SSH key has changed.
→ docker compose restart perfshop-orchestrator to force rediscovery of the SSH key.
404 on resultpublisher¶
Normal in Community Edition — not blocking for test execution. The PASS/FAIL status is still published in Squash TM.