Skip to content

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 — no docker build is possible. The production docker-compose.yml uses pre-built images: - Application images: from the GitLab registry - perfshop-test-runner image: built on Windows and loaded via docker 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:

docker compose ps | grep -E "testmgmt|orchestrator|test-runner"
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 (branch main)
  • PerfShop Orchestrator automation server with the correct RSA RS512 token
  • ✅ Workflow Squash simple, technology Robot Framework, tags linux/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.

  1. AdministrationAutomation serversPerfShop Orchestrator
  2. 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.

  1. Save

Step 2 — Check the available environment

AdministrationProjectsPerfShop QAAvailable environments section:

perfshop-test-runner    linux, robotframework    IDLE

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.

  1. Test cases space → New test case
Field Value
Name CT-001 API smoke test
Nature Automated
  1. 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

  1. Campaigns space → New campaign: Smoke test campaign
  2. New iterationAdd test cases → select CT-001
  3. Click Run automatically

Expected result in the orchestrator logs:

CT-001 Smoke test - API PerfShop repond    | PASS |
1 test, 1 passed, 0 failed

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.