Phase 2 validates that the two agents hand off data correctly between each other and that all tool-to-tool connections behave as expected across the full automated flow. All tests remain in the sandbox environment. Integration test IDs continue the T sequence from Phase 1.
ID
Scenario
Input
Expected output
Pass criteria
T13
Survey Distribution Agent to Google Sheets handoff
10 invitations sent and logged by Survey Distribution Agent; Response Analysis Agent trigger fires at window close
Response Analysis Agent reads from the exact Google Sheets tab written by the Distribution Agent; no schema mismatch errors; all 10 rows visible to the analysis step
Analysis Agent reads 10 rows without transformation errors; column headers match expected schema; no missing employee IDs
T14
Typeform to Google Sheets aggregation via Response Analysis Agent
Typeform sandbox webhook fires on survey close with 10 response records
All 10 response records written to the Sheets 'responses' tab within 2 minutes of webhook receipt; eNPS and category scores calculated automatically
Webhook delivery confirmed in Typeform sandbox log; Sheets row count equals 10 within 2-minute SLA; formulas return numeric values for all score columns
T15
Google Sheets to Notion report creation
Scored Sheets tab from T14 used as input; prior cycle data present in Sheets for trend comparison
Notion sandbox page created with all required sections; trend deltas computed from prior cycle; page URL written back to Google Sheets in the 'report_url' column
Notion page accessible via generated URL; all five sections populated; report_url column in Sheets is non-empty
T16
Notion report to Slack and Gmail delivery
Notion sandbox page URL from T15; Slack test channel configured; test Gmail recipient address set
Slack test channel receives message containing Notion page URL and one-line score summary; Gmail sandbox message sent to test recipient with report link and brief summary
Slack message present in test channel within 60 seconds of Notion page creation; Gmail sandbox outbox contains one message to the test address with correct URL
T17
New-hire 30-day trigger via BambooHR
BambooHR sandbox record for a new employee with a hire date exactly 30 days prior to today
Survey Distribution Agent fires independently of the scheduled cycle trigger; new hire receives a standalone survey invitation; invitation logged separately in Google Sheets
Survey invitation in sandbox outbox addressed to the new-hire test email; Google Sheets log contains a row tagged 'trigger_type: new_hire_30_day'
T18
Manual survey close in Typeform triggers Response Analysis Agent
HR manually closes the sandbox Typeform survey before the scheduled window end date
Response Analysis Agent fires within 5 minutes of manual close; aggregation and Notion page creation proceed as per scheduled close
Agent execution log shows trigger source 'typeform_manual_close'; Notion sandbox page created with correct timestamp
T19
End-to-end flow timing: invitation to report
10-employee sandbox run with 8 responding before reminder and 2 responding after reminder
Full flow completes: invitation send, response check, reminder to 2 non-responders, aggregation after close, Notion page creation, Slack and Gmail delivery
All steps complete without manual intervention; total automated processing time from trigger to Slack delivery is under 10 minutes excluding the survey window itself
T20
Google Sheets log accuracy across full cycle
Full sandbox cycle from T19
Google Sheets log contains: 10 invited rows, 8 responded before reminder, 2 reminder flags, 2 responded after reminder, 1 report URL, 0 error rows
Each column in the Sheets log matches the expected state; no duplicate rows; error log tab is empty
Edge-case tests are numbered separately with an E prefix. These scenarios cover failure conditions, data anomalies, and human timeout situations that the automation must handle gracefully.
ID
Scenario
Input
Expected output
Pass criteria
E01
Duplicate employee record in BambooHR export
BambooHR sandbox returns the same employee ID twice in the active list
Deduplication logic removes the duplicate; exactly one invitation sent to that employee; Sheets log shows one row for that employee ID with a 'deduplicated: true' flag
Single invitation in sandbox outbox for the duplicated employee; Sheets log contains one row per employee ID; deduplication flag present
E02
Employee record missing email address in BambooHR
BambooHR sandbox returns one employee record with a null email field
That employee is skipped for invitation; their record is written to the Sheets error log with status 'missing_email'; Slack test channel notified
No invitation sent to a null address; error log row present with employee ID and 'missing_email' status; Slack alert received
E03
Typeform returns zero responses at window close
Survey window closes with zero Typeform responses submitted
Response Analysis Agent fires but detects empty response set; Notion page is not created; Slack alert sent with message 'zero responses received, report not generated'; Google Sheets log records 'responses: 0'
No Notion page created; Slack alert present in test channel; Sheets log reflects zero response count
E04
Google Sheets write failure during invitation logging
Google Sheets API returns 503 during invitation log write after 3 of 10 invitations are sent
Automation retries the Sheets write up to 3 times; on persistent failure continues sending remaining invitations and queues a retry for the Sheets log; Slack alert sent noting partial log failure
Remaining invitations sent; Sheets write retried and completed on subsequent attempt; Slack alert confirms partial log failure and recovery
E05
Notion API unavailable during report creation
Notion sandbox returns 503 during page creation step
Automation retries Notion write up to 3 times with exponential back-off; on persistent failure writes the report data as a structured JSON payload to Google Sheets fallback tab and sends Slack alert
Notion page creation fails gracefully; fallback tab in Sheets contains report payload; Slack alert received with message 'Notion unavailable, report stored in Sheets fallback'
E06
Slack notification fails at report delivery step
Slack sandbox webhook returns 400 during the report delivery notification
Automation logs the Slack failure; Gmail delivery to leadership address continues and succeeds; error logged in Sheets; no silent failure
Gmail delivery completes; Sheets error log records Slack failure with status code; process does not halt on Slack error alone
E07
HR does not review Notion report within 48 hours of creation
Notion page created and HR review step reached; no HR action recorded within 48 hours
Automation sends a follow-up Slack message to the HR Slack channel and a Gmail reminder to the HR Manager address reminding them that the report is pending review before leadership distribution
Slack reminder and Gmail reminder both appear in sandbox outputs at the 48-hour mark; no automatic distribution to leadership until HR review is confirmed