Skip to content
Merged
Show file tree
Hide file tree
Changes from 89 commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
c5a76cb
Add Playwright PR smoke automation pipeline
Abhi1992002 Apr 6, 2026
b782e11
Remove redundant Playwright seeded user pool setup
Abhi1992002 Apr 6, 2026
189d86d
Add 16 happy-path smoke tests
Abhi1992002 Apr 6, 2026
9710f4a
Convert smoke suite to PR E2E happy paths
Abhi1992002 Apr 6, 2026
d9d42b8
Use deterministic marketplace agent for PR E2E
Abhi1992002 Apr 6, 2026
7ec2abf
Fix backend lint issues
Abhi1992002 Apr 6, 2026
ed476b4
Harden PR E2E happy path tests
Abhi1992002 Apr 6, 2026
d4fc0ac
feat(copilot): add Fast/Thinking mode toggle with full tool parity (#…
majdyz Apr 6, 2026
5f9873d
ci(frontend): stabilize pr e2e smoke tests
Abhi1992002 Apr 6, 2026
de20742
Merge branch 'dev' into abhimanyuyadav/secrt-2184-automated-qa-testin…
Abhi1992002 Apr 6, 2026
2688d39
fix(frontend): resolve lint and codeql issues
Abhi1992002 Apr 7, 2026
ff63e42
refactor(frontend): consolidate e2e and integration test suites
Abhi1992002 Apr 7, 2026
dad858d
Merge branch 'dev' into abhimanyuyadav/secrt-2184-automated-qa-testin…
Abhi1992002 Apr 7, 2026
033df72
fix(backend): remove unintended source changes
Abhi1992002 Apr 7, 2026
1f574e8
fix(frontend): resolve pr local type regressions
Abhi1992002 Apr 7, 2026
0581138
fix(frontend): stabilize library e2e run action
Abhi1992002 Apr 7, 2026
dc62738
fix(frontend): format library e2e helper
Abhi1992002 Apr 7, 2026
865cca6
ci(frontend): expand pr e2e coverage
Abhi1992002 Apr 7, 2026
f76ce87
fix(frontend): stabilize e2e happy paths
Abhi1992002 Apr 7, 2026
4a0c378
fix(frontend): stabilize remaining e2e cases
Abhi1992002 Apr 7, 2026
69fa573
fix(frontend): add library agent page e2e coverage
Abhi1992002 Apr 7, 2026
b59a9dc
fix(frontend): stabilize e2e happy paths
Abhi1992002 Apr 7, 2026
15c0839
ci(frontend): set playwright workers to 6
Abhi1992002 Apr 7, 2026
8d711c7
merge: resolve conflicts with dev
Abhi1992002 Apr 7, 2026
a77b61d
fix(frontend): restore useDeleteWorkspaceFile import and prettier for…
Abhi1992002 Apr 7, 2026
c8dc1c4
fix(frontend): drop flaky e2e schedule test and brittle marketplace t…
Abhi1992002 Apr 7, 2026
edf79c5
test(frontend): refactor e2e happy paths into page objects
Abhi1992002 Apr 9, 2026
5f3d5b8
fix(frontend): stabilize playwright smoke suite
Abhi1992002 Apr 9, 2026
2493fde
fix(platform): address e2e review follow-ups
Abhi1992002 Apr 9, 2026
ac47ffb
fix(frontend): harden playwright helper URLs
Abhi1992002 Apr 9, 2026
188fe7d
fix(frontend): pin marketplace smoke agent
Abhi1992002 Apr 9, 2026
dab71d1
fix(frontend): wait for wallet popover state
Abhi1992002 Apr 9, 2026
eab2780
fix(tests): enhance API key creation and import agent workflows with …
Abhi1992002 Apr 9, 2026
fa9e8c5
fix(frontend): revert non-test schedule modal edits
Abhi1992002 Apr 9, 2026
6b166a9
test(frontend): strengthen release e2e checklist assertions
Abhi1992002 Apr 9, 2026
f639d7a
test(frontend): extend release coverage for library and profile flows
Abhi1992002 Apr 9, 2026
ad83b5e
fix(frontend): stabilize seeded e2e auth user selection
Abhi1992002 Apr 9, 2026
471ace3
fix(frontend): repair library e2e graph typing
Abhi1992002 Apr 9, 2026
d9e7330
fix(frontend): avoid busy polling library run status
Abhi1992002 Apr 9, 2026
ef0715c
fix(platform): stabilize marketplace e2e run flow
Abhi1992002 Apr 9, 2026
e23e94b
fix(frontend): address PR review feedback
Abhi1992002 Apr 13, 2026
8ed7af8
fix(platform): stabilize marketplace calculator smoke flow
Abhi1992002 Apr 13, 2026
7226320
fix(backend): merge dev and fix lint
Abhi1992002 Apr 13, 2026
7d197ea
fix(backend): format platform cost tests
Abhi1992002 Apr 13, 2026
bd3bd72
fix(frontend): drop hardcoded auth storage origin
Abhi1992002 Apr 13, 2026
33e99ad
fix(frontend): restore marketplace image components
Abhi1992002 Apr 13, 2026
16ed3f4
fix(frontend/marketplace): stabilize marketplace run smoke test
Abhi1992002 Apr 13, 2026
1a29bd9
fix(frontend): unflake playwright marketplace and library flows
Abhi1992002 Apr 13, 2026
7e8998a
fix(frontend): stabilize playwright output and schedule waits
Abhi1992002 Apr 13, 2026
9a9acb9
fix(platform): stabilize playwright marketplace and schedule flows
Abhi1992002 Apr 13, 2026
c139077
fix(frontend): distinguish missing schedule listener from post failure
Abhi1992002 Apr 13, 2026
147291c
fix(backend): reassign seeded marketplace graph ids
Abhi1992002 Apr 13, 2026
7c9d72f
fix(frontend): stabilize and speed up playwright smoke suite
Abhi1992002 Apr 13, 2026
4c0c5e5
fix(frontend): simplify flaky playwright smoke flows
Abhi1992002 Apr 13, 2026
b941524
fix(frontend): stabilize flaky playwright auth and library flows
Abhi1992002 Apr 13, 2026
45ccf1d
fix(platform): stabilize scheduler and export e2e flow
Abhi1992002 Apr 13, 2026
5c709d0
fix(platform): skip scheduler startup backfill in e2e
Abhi1992002 Apr 13, 2026
790672f
fix(frontend): stabilize library and builder e2e flows
Abhi1992002 Apr 13, 2026
2f52e04
fix(frontend): format playwright library helpers
Abhi1992002 Apr 13, 2026
58a7ffb
fix(frontend): address library e2e review feedback
Abhi1992002 Apr 13, 2026
d968124
fix(backend): revert scheduler startup backfill gate
Abhi1992002 Apr 13, 2026
ed79fac
fix(frontend): stabilize export e2e flow
Abhi1992002 Apr 13, 2026
387a76b
ci(platform): wait for scheduler before e2e
Abhi1992002 Apr 13, 2026
5bbbde6
ci(platform): wait for scheduler via container health
Abhi1992002 Apr 13, 2026
e1385ca
ci(platform): remove scheduler readiness check
Abhi1992002 Apr 13, 2026
51880c1
dx(frontend): trim and stabilize e2e smoke suite
Abhi1992002 Apr 13, 2026
36d1585
Revert "dx(frontend): trim and stabilize e2e smoke suite"
Abhi1992002 Apr 13, 2026
07cab22
fix(platform): remove scheduler smoke test and reuse seeded listing
Abhi1992002 Apr 13, 2026
dd99112
fix(frontend): harden flaky e2e selectors
Abhi1992002 Apr 13, 2026
cb30f6a
fix(frontend): tolerate schedule fetch failures in library e2e
Abhi1992002 Apr 13, 2026
441f7bb
fix(frontend): restore schedule stale tracking
Abhi1992002 Apr 13, 2026
43c7587
fix(frontend): increase waitForExportActionSurface timeout to 30s
Abhi1992002 Apr 13, 2026
c11154f
fix(frontend): simplify flaky export test to wait directly for button
Abhi1992002 Apr 14, 2026
e395825
fix(frontend): revert useSidebarRunsList changes to match dev
Abhi1992002 Apr 14, 2026
b47915a
fix(frontend): simplify flaky export test to wait directly for button
Abhi1992002 Apr 14, 2026
7d9ae07
fix(frontend): remove flaky export agent e2e test
Abhi1992002 Apr 14, 2026
4de08ee
fix(frontend): format builder-happy-path.spec.ts with prettier
Abhi1992002 Apr 14, 2026
244142a
fix(frontend): remove brittle agent name assertion from marketplace e2e
Abhi1992002 Apr 14, 2026
f439eb1
fix(frontend): use search flow for marketplace e2e instead of hardcod…
Abhi1992002 Apr 14, 2026
596e937
fix(frontend): search for agent in library after marketplace add
Abhi1992002 Apr 14, 2026
ab54448
fix(platform): fix flaky marketplace e2e search and calculator graph …
Abhi1992002 Apr 14, 2026
a93a9e3
fix(backend): format e2e_test_data.py with black
Abhi1992002 Apr 14, 2026
c137fe1
fix(frontend): use visible selector for marketplace e2e store-card lo…
Abhi1992002 Apr 14, 2026
3e000d4
Merge branch 'dev' into abhimanyuyadav/secrt-2184-automated-qa-testin…
Abhi1992002 Apr 14, 2026
4ce7d77
Merge branch 'dev' into abhimanyuyadav/secrt-2184-automated-qa-testin…
Abhi1992002 Apr 14, 2026
964a69f
Merge branch 'dev' into abhimanyuyadav/secrt-2184-automated-qa-testin…
Abhi1992002 Apr 14, 2026
936bb46
Merge branch 'dev' into abhimanyuyadav/secrt-2184-automated-qa-testin…
Abhi1992002 Apr 14, 2026
7222b6b
fix(platform): make graph seeding idempotent and address PR review fe…
Abhi1992002 Apr 14, 2026
312fe44
Merge branch 'abhimanyuyadav/secrt-2184-automated-qa-testing-pipeline…
Abhi1992002 Apr 14, 2026
514967a
ci(platform): make backend codecov check informational
Abhi1992002 Apr 14, 2026
7466f86
Revert "ci(platform): make backend codecov check informational"
Abhi1992002 Apr 14, 2026
473fec1
Merge branch 'dev' into abhimanyuyadav/secrt-2184-automated-qa-testin…
Abhi1992002 Apr 14, 2026
12110c7
Merge branch 'dev' into abhimanyuyadav/secrt-2184-automated-qa-testin…
Abhi1992002 Apr 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions .claude/skills/write-frontend-tests/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,15 @@ git diff "$BASE_BRANCH"...HEAD -- src/ | head -500
For each changed file, determine:

1. **Is it a page?** (`page.tsx`) — these are the primary test targets
2. **Is it a hook?** (`use*.ts`) — test via the page that uses it
2. **Is it a hook?** (`use*.ts`) — test via the page/component that uses it; avoid direct `renderHook()` tests unless it is a shared reusable hook with standalone business logic
3. **Is it a component?** (`.tsx` in `components/`) — test via the parent page unless it's complex enough to warrant isolation
4. **Is it a helper?** (`helpers.ts`, `utils.ts`) — unit test directly if pure logic

**Priority order:**

1. Pages with new/changed data fetching or user interactions
2. Components with complex internal logic (modals, forms, wizards)
3. Hooks with non-trivial business logic
3. Shared hooks with standalone business logic when UI-level coverage is impractical
4. Pure helper functions

Skip: styling-only changes, type-only changes, config changes.
Expand Down Expand Up @@ -163,6 +164,7 @@ describe("LibraryPage", () => {
- Use `waitFor` when asserting side effects or state changes after interactions
- Import `fireEvent` or `userEvent` from the test-utils for interactions
- Do NOT mock internal hooks or functions — mock at the API boundary via MSW
- Prefer Orval-generated MSW handlers and response builders over hand-built API response objects
- Do NOT use `act()` manually — `render` and `fireEvent` handle it
- Keep tests focused: one behavior per test
- Use descriptive test names that read like sentences
Expand Down Expand Up @@ -190,9 +192,7 @@ import { http, HttpResponse } from "msw";
server.use(
http.get("http://localhost:3000/api/proxy/api/v2/library/agents", () => {
return HttpResponse.json({
agents: [
{ id: "1", name: "Test Agent", description: "A test agent" },
],
agents: [{ id: "1", name: "Test Agent", description: "A test agent" }],
pagination: { total_items: 1, total_pages: 1, page: 1, page_size: 10 },
});
}),
Expand All @@ -211,6 +211,7 @@ pnpm test:unit --reporter=verbose
```

If tests fail:

1. Read the error output carefully
2. Fix the test (not the source code, unless there is a genuine bug)
3. Re-run until all pass
Expand Down
13 changes: 11 additions & 2 deletions .github/workflows/platform-fullstack-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ jobs:
run: |
cp ../backend/.env.default ../backend/.env
echo "OPENAI_INTERNAL_API_KEY=${{ secrets.OPENAI_API_KEY }}" >> ../backend/.env
echo "SCHEDULER_STARTUP_EMBEDDING_BACKFILL=false" >> ../backend/.env
env:
# Used by E2E test data script to generate embeddings for approved store agents
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
Expand Down Expand Up @@ -288,6 +289,14 @@ jobs:
cache: "pnpm"
cache-dependency-path: autogpt_platform/frontend/pnpm-lock.yaml

- name: Set up tests - Cache Playwright browsers
uses: actions/cache@v5
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-${{ hashFiles('autogpt_platform/frontend/pnpm-lock.yaml') }}
restore-keys: |
playwright-${{ runner.os }}-

- name: Copy source maps from Docker for E2E coverage
run: |
FRONTEND_CONTAINER=$(docker compose -f ../docker-compose.resolved.yml ps -q frontend)
Expand All @@ -299,8 +308,8 @@ jobs:
- name: Set up tests - Install browser 'chromium'
run: pnpm playwright install --with-deps chromium

- name: Run Playwright tests
run: pnpm test:no-build
- name: Run Playwright E2E suite
run: pnpm test:e2e:no-build
continue-on-error: false

- name: Upload E2E coverage to Codecov
Expand Down
166 changes: 166 additions & 0 deletions autogpt_platform/backend/agents/calculator-agent.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
{
"id": "858e2226-e047-4d19-a832-3be4a134d155",
"version": 2,
"is_active": true,
"name": "Calculator agent",
"description": "",
"instructions": null,
"recommended_schedule_cron": null,
"forked_from_id": null,
"forked_from_version": null,
"user_id": "",
"created_at": "2026-04-13T03:45:11.241Z",
"nodes": [
{
"id": "6762da5d-6915-4836-a431-6dcd7d36a54a",
"block_id": "c0a8e994-ebf1-4a9c-a4d8-89d09c86741b",
"input_default": {
"name": "Input",
"secret": false,
"advanced": false
},
"metadata": {
"position": {
"x": -188.2244873046875,
"y": 95
}
},
"input_links": [],
"output_links": [
{
"id": "432c7caa-49b9-4b70-bd21-2fa33a569601",
"source_id": "6762da5d-6915-4836-a431-6dcd7d36a54a",
"sink_id": "bf4a15ff-b0c4-4032-a21b-5880224af690",
"source_name": "result",
"sink_name": "a",
"is_static": true
}
],
"graph_id": "858e2226-e047-4d19-a832-3be4a134d155",
"graph_version": 2,
"webhook_id": null
},
{
"id": "65429c9e-a0c6-4032-a421-6899c394fa74",
"block_id": "363ae599-353e-4804-937e-b2ee3cef3da4",
"input_default": {
"name": "Output",
"secret": false,
"advanced": false,
"escape_html": false
},
"metadata": {
"position": {
"x": 825.198974609375,
"y": 123.75
}
},
"input_links": [
{
"id": "8cdb2f33-5b10-4cc2-8839-f8ccb70083a3",
"source_id": "bf4a15ff-b0c4-4032-a21b-5880224af690",
"sink_id": "65429c9e-a0c6-4032-a421-6899c394fa74",
"source_name": "result",
"sink_name": "value",
"is_static": false
}
],
"output_links": [],
"graph_id": "858e2226-e047-4d19-a832-3be4a134d155",
"graph_version": 2,
"webhook_id": null
},
{
"id": "bf4a15ff-b0c4-4032-a21b-5880224af690",
"block_id": "b1ab9b19-67a6-406d-abf5-2dba76d00c79",
"input_default": {
"b": 34,
"operation": "Add",
"round_result": false
},
"metadata": {
"position": {
"x": 323.0255126953125,
"y": 121.25
}
},
"input_links": [
{
"id": "432c7caa-49b9-4b70-bd21-2fa33a569601",
"source_id": "6762da5d-6915-4836-a431-6dcd7d36a54a",
"sink_id": "bf4a15ff-b0c4-4032-a21b-5880224af690",
"source_name": "result",
"sink_name": "a",
"is_static": true
}
],
"output_links": [
{
"id": "8cdb2f33-5b10-4cc2-8839-f8ccb70083a3",
"source_id": "bf4a15ff-b0c4-4032-a21b-5880224af690",
"sink_id": "65429c9e-a0c6-4032-a421-6899c394fa74",
"source_name": "result",
"sink_name": "value",
"is_static": false
}
],
"graph_id": "858e2226-e047-4d19-a832-3be4a134d155",
"graph_version": 2,
"webhook_id": null
}
],
"links": [
{
"id": "8cdb2f33-5b10-4cc2-8839-f8ccb70083a3",
"source_id": "bf4a15ff-b0c4-4032-a21b-5880224af690",
"sink_id": "65429c9e-a0c6-4032-a421-6899c394fa74",
"source_name": "result",
"sink_name": "value",
"is_static": false
},
{
"id": "432c7caa-49b9-4b70-bd21-2fa33a569601",
"source_id": "6762da5d-6915-4836-a431-6dcd7d36a54a",
"sink_id": "bf4a15ff-b0c4-4032-a21b-5880224af690",
"source_name": "result",
"sink_name": "a",
"is_static": true
}
],
"sub_graphs": [],
"input_schema": {
"type": "object",
"properties": {
"Input": {
"advanced": false,
"secret": false,
"title": "Input"
}
},
"required": [
"Input"
]
},
"output_schema": {
"type": "object",
"properties": {
"Output": {
"advanced": false,
"secret": false,
"title": "Output"
}
},
"required": [
"Output"
]
},
"has_external_trigger": false,
"has_human_in_the_loop": false,
"has_sensitive_action": false,
"trigger_setup_info": null,
"credentials_input_schema": {
"type": "object",
"properties": {},
"required": []
}
}
Loading
Loading