Merge pull request 'fix: Formula: run-user-test (persona UX evaluation) (#978)' (#995) from fix/issue-978 into master
Reviewed-on: https://codeberg.org/johba/harb/pulls/995
This commit is contained in:
commit
14722fab55
1 changed files with 109 additions and 0 deletions
109
formulas/run-user-test.toml
Normal file
109
formulas/run-user-test.toml
Normal file
|
|
@ -0,0 +1,109 @@
|
||||||
|
# formulas/run-user-test.toml
|
||||||
|
#
|
||||||
|
# Persona-based UX evaluation against the harb stack.
|
||||||
|
#
|
||||||
|
# Type: sense — produces UX metrics, changes no code or contracts.
|
||||||
|
# The formula spins up a full self-contained stack, runs Playwright against
|
||||||
|
# all 5 personas, collects structured reports, then tears the stack down.
|
||||||
|
|
||||||
|
[formula]
|
||||||
|
id = "run-user-test"
|
||||||
|
type = "sense"
|
||||||
|
description = "Persona-based UX evaluation against the harb stack"
|
||||||
|
depends_on = [973] # evidence directory structure must exist
|
||||||
|
|
||||||
|
# ── Stack management ─────────────────────────────────────────────────────────
|
||||||
|
# The formula is self-contained: it starts and stops its own stack.
|
||||||
|
|
||||||
|
[stack]
|
||||||
|
start_cmd = "./scripts/dev.sh start"
|
||||||
|
health_cmd = "./scripts/dev.sh health"
|
||||||
|
stop_cmd = "./scripts/dev.sh stop"
|
||||||
|
|
||||||
|
# ── Inputs ───────────────────────────────────────────────────────────────────
|
||||||
|
# 5 personas across 2 funnels. Each persona has a dedicated Playwright spec
|
||||||
|
# that simulates the full journey: connect wallet → mint ETH → buy KRK →
|
||||||
|
# stake → verify position.
|
||||||
|
|
||||||
|
[[inputs.funnels]]
|
||||||
|
name = "passive-holder"
|
||||||
|
|
||||||
|
[[inputs.funnels.personas]]
|
||||||
|
name = "tyler"
|
||||||
|
display = "Tyler 'Bags' Morrison"
|
||||||
|
spec = "tests/e2e/usertest/tyler-retail-degen.spec.ts"
|
||||||
|
|
||||||
|
[[inputs.funnels.personas]]
|
||||||
|
name = "alex"
|
||||||
|
display = "Alex Rivera"
|
||||||
|
spec = "tests/e2e/usertest/alex-newcomer.spec.ts"
|
||||||
|
|
||||||
|
[[inputs.funnels.personas]]
|
||||||
|
name = "sarah"
|
||||||
|
display = "Sarah Park"
|
||||||
|
spec = "tests/e2e/usertest/sarah-yield-farmer.spec.ts"
|
||||||
|
|
||||||
|
[[inputs.funnels]]
|
||||||
|
name = "staker"
|
||||||
|
|
||||||
|
[[inputs.funnels.personas]]
|
||||||
|
name = "priya"
|
||||||
|
display = "Dr. Priya Malhotra"
|
||||||
|
spec = "tests/e2e/usertest/priya-institutional.spec.ts"
|
||||||
|
|
||||||
|
[[inputs.funnels.personas]]
|
||||||
|
name = "marcus"
|
||||||
|
display = "Marcus 'Flash' Chen"
|
||||||
|
spec = "tests/e2e/usertest/marcus-degen.spec.ts"
|
||||||
|
|
||||||
|
# ── Steps ────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
[[steps]]
|
||||||
|
id = "stack-up"
|
||||||
|
description = "Spin up full stack (boots Docker services, waits for health)"
|
||||||
|
run = "./scripts/dev.sh start"
|
||||||
|
|
||||||
|
[[steps]]
|
||||||
|
id = "run-personas"
|
||||||
|
description = "Run all 5 personas via Playwright (workers=1, sequential to avoid account conflicts)"
|
||||||
|
run = "./scripts/run-usertest.sh"
|
||||||
|
after = ["stack-up"]
|
||||||
|
|
||||||
|
[[steps]]
|
||||||
|
id = "collect"
|
||||||
|
description = "Aggregate per-persona JSON reports from tmp/usertest-results/ into evidence/user-test/{date}.json"
|
||||||
|
output = "evidence/user-test/{date}.json"
|
||||||
|
schema = "evidence/README.md#user-test"
|
||||||
|
after = ["run-personas"]
|
||||||
|
|
||||||
|
[[steps]]
|
||||||
|
id = "stack-down"
|
||||||
|
description = "Tear down stack"
|
||||||
|
run = "./scripts/dev.sh stop"
|
||||||
|
after = ["collect"]
|
||||||
|
|
||||||
|
[[steps]]
|
||||||
|
id = "deliver"
|
||||||
|
description = "Commit evidence file to main and post summary to issue as comment"
|
||||||
|
after = ["collect"]
|
||||||
|
|
||||||
|
# ── Products ─────────────────────────────────────────────────────────────────
|
||||||
|
# Three outputs following the standard evidence delivery pattern:
|
||||||
|
# 1. evidence file → committed to main
|
||||||
|
# 2. screenshots → referenced inside the evidence file
|
||||||
|
# 3. summary → posted as issue comment
|
||||||
|
|
||||||
|
[[products]]
|
||||||
|
type = "evidence"
|
||||||
|
path = "evidence/user-test/{date}.json"
|
||||||
|
schema = "evidence/README.md#user-test"
|
||||||
|
destination = "commit"
|
||||||
|
|
||||||
|
[[products]]
|
||||||
|
type = "screenshots"
|
||||||
|
path = "test-results/usertest/"
|
||||||
|
destination = "evidence-ref" # paths recorded in the evidence file, not committed separately
|
||||||
|
|
||||||
|
[[products]]
|
||||||
|
type = "summary"
|
||||||
|
destination = "issue-comment"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue