FS-DOC-06Quality
Test and QA Plan
Staff Scheduling and Rostering
[YourCompany.com] · Operations Department · Prepared by FullSpec · [Today's Date]
This document defines the full quality assurance process for the Staff Scheduling and Rostering automation. It covers three sequential test phases: unit testing of each agent in isolation, integration and edge-case testing across agent handoffs, and end-to-end production validation. The FullSpec team runs all phases; your Operations Manager joins Phase 3 to review outputs and record final approval. No phase begins until the previous phase has fully passed.
01Testing approach
Testing is structured across three sequential phases. Phase 1 isolates each agent and verifies it behaves correctly on its own. Phase 2 tests the handoffs between agents and the system's resilience against bad or missing data. Phase 3 runs the complete workflow end to end in the production environment with real credentials. No phase begins until every test case in the previous phase carries a passing status. The FullSpec team owns execution throughout; the process owner joins Phase 3 only.
1Phase 1: Unit Testing
Each agent tested in isolation against sandbox credentials
Scope
Individual agent logic: Availability Collection Agent, Roster Drafting Agent, Roster Publication and Payroll Agent
Environment
Sandbox only. No production accounts, no live staff data, no real Deputy or Xero records
Credential rule
All credentials must be sandbox or test-account credentials. Production API keys must not be loaded into the test environment
Pass condition
All cases T01 through T14 return the expected output with no unhandled errors
Who runs it
FullSpec team. Process owner is not required for this phase
2Phase 2: Integration and Edge Case Testing
Agent handoffs, tool connections, and failure-mode resilience
Scope
Cross-agent data handoffs, API connectivity between all tools (Gmail, Google Sheets, Deputy, Slack, Xero), and edge-case scenario handling
Environment
Sandbox for tool API calls. Staging Google Sheet and test Deputy account. Xero demo company
Credential rule
Sandbox credentials only. OAuth tokens scoped to test workspaces and demo accounts. No production Xero organisation or live Deputy account
Pass condition
All cases T15 through T22 pass and all edge cases E01 through E07 produce the correct fallback or error-handling behaviour
Who runs it
FullSpec team. Process owner is not required for this phase
3Phase 3: End-to-End Production Test
Full workflow run against live credentials with real tool accounts
Scope
Complete workflow from timer trigger through to Xero timesheet export, run against production credentials with a controlled test roster
Environment
Production. Live Gmail account, live Google Sheet, live Deputy account, live Slack workspace, live Xero organisation
Credential rule
Production credentials are used. All test records (shifts, timesheets, notifications) must be voided or deleted after the run. Use an internal test email address for all staff notifications
Pass condition
All cases T23 through T27 pass, including process owner review and approval recorded in the FullSpec confirmation log
Who runs it
FullSpec team executes the run. The process owner (Operations Manager) participates in T27 to review outputs and confirm sign-off
Test and QA PlanPage 1 of 4
FS-DOC-06Quality
02Phase 1 — unit test cases
All Phase 1 tests must use sandbox credentials only. Do not connect production Gmail, Deputy, Xero, or Slack accounts during this phase. Use a test Google Sheet with synthetic staff data. No real staff member should receive a message during Phase 1.
Availability Collection Agent — test cases T01 through T05
ID
Scenario
Input
Expected Output
Pass Criteria
T01
Happy path: timer fires, availability emails sent to all staff
Recurring weekly timer fires; staff list contains 8 active records in Google Sheet
8 availability request emails dispatched via Gmail sandbox; timestamp logged to Sheet column A
All 8 send events confirmed in Gmail sandbox sent log; Sheet row updated within 60 seconds
T02
Responses logged to Google Sheet correctly
3 simulated form responses submitted with valid availability data
3 new rows written to the availability Sheet with correct staff name, date, and time-slot columns populated
Row count increases by 3; no blank required cells; data types match schema (date as YYYY-MM-DD)
T03
24-hour follow-up reminder sent to non-responders
8 emails sent at T01; only 3 responses logged after 24 hours
5 follow-up reminder emails dispatched to the non-responding staff; no duplicate sent to the 3 who already responded
Reminder send count equals 5; responded-staff receive zero reminders; Gmail sandbox log confirms correct recipients
T04
Failure: Gmail API returns 429 rate-limit error on send
Staff list of 8; Gmail sandbox configured to return 429 on the 5th send attempt
Agent retries with exponential back-off; after 3 retries the remaining sends complete; error event written to log
All 8 emails eventually delivered; error log entry present with timestamp and HTTP status 429; no duplicate sends
T05
Failure: Google Sheet write fails (permission error)
Form response submitted; Sheet access token revoked before write
Agent catches the write error; posts an alert to the designated error Slack channel; halts further processing until resolved
No partial row written to Sheet; Slack error alert received in sandbox test channel within 2 minutes; agent status set to paused
Roster Drafting Agent — test cases T06 through T10
ID
Scenario
Input
Expected Output
Pass Criteria
T06
Happy path: draft roster built with no conflicts
8 staff availability responses in Sheet; shift demand requires 3 staff per day across 5 days; no overtime or award breaches
Draft roster populated in Google Sheet with correct staff-to-shift allocations; conflict summary report shows zero flags
All 15 shift slots filled; no staff allocated beyond their stated availability; overtime column shows zero for all staff
T07
Award rule compliance: consecutive-day limit enforced
Staff member available all 7 days; shift demand attempts to schedule them 6 consecutive days
Agent caps allocation at 5 consecutive days; flags the breach in the conflict summary; posts Slack notification to manager
Staff member scheduled for no more than 5 consecutive days; conflict summary contains one breach entry; Slack message delivered
T08
Overtime threshold flag raised
Staff member's allocated hours total 42 in a single week against a 38-hour threshold
Agent flags the overtime breach in the conflict summary; does not auto-publish; awaits manager resolution
Overtime flag entry present in conflict summary with staff name, scheduled hours, and threshold value; draft status set to needs-review
T09
Failure: insufficient available staff to fill all shifts
Shift demand requires 3 staff on Saturday; only 1 staff member available that day
Agent fills the 1 available slot; marks the remaining 2 Saturday slots as unresolved gaps; conflict summary lists the gap; Slack alert sent
Draft contains 1 filled Saturday slot and 2 gap entries; Slack alert received with day, shift, and gap count; agent does not halt
T10
Failure: availability Sheet is empty or malformed
Agent triggered but Google Sheet contains zero data rows or headers only
Agent detects empty data set; posts error alert to Slack; does not proceed to draft roster; sets run status to failed
No roster rows written; Slack error message received within 2 minutes; run log shows status: failed with reason: empty availability data
Roster Publication and Payroll Agent — test cases T11 through T14
ID
Scenario
Input
Expected Output
Pass Criteria
T11
Happy path: approved roster published to Deputy and staff notified
Manager approval flag set to true in Google Sheet; 8 staff with confirmed shifts
All 8 shifts created in Deputy sandbox; each staff member receives a personalised Slack message and Gmail summary
Deputy sandbox shows 8 shift records for the correct week; Slack test channel shows 8 individual messages; Gmail sandbox shows 8 sent emails
T12
Xero timesheet export at pay-period close
Pay-period close event fires; Deputy sandbox contains 5 completed shifts with hours confirmed
5 timesheet entries created in Xero demo company with correct staff ID, date, and hours values
Xero demo company shows 5 new timesheet records; hours match Deputy shift data exactly; no duplicate entries
T13
Failure: Deputy API returns 503 on shift creation
Approval flag set; Deputy sandbox configured to return 503 on the 2nd shift creation call
Agent retries the failed call up to 3 times with back-off; on continued failure, posts error to Slack and halts remaining shift creations
At least one retry attempt logged; Slack error alert identifies the affected shift and staff member; successfully created shifts are not duplicated on retry
T14
Failure: Xero API rejects timesheet entry due to missing employee ID
Pay-period close fires; one staff member's Xero employee ID is null in the mapping config
Agent skips the invalid record; logs a specific error entry for that staff member; posts alert to Slack; continues processing remaining valid records
Xero receives entries for all valid staff; error log contains one entry with staff name and reason: missing employee ID; Slack alert received
Test and QA PlanPage 2 of 4
FS-DOC-06Quality
03Phase 2 — integration and edge case tests
Integration tests verify that data passes correctly between agents and that each tool API connection behaves as expected under realistic conditions. Test IDs continue the sequence from Phase 1.
ID
Scenario
Input
Expected Output
Pass Criteria
T15
Handoff: Availability Collection Agent marks Sheet complete and triggers Roster Drafting Agent
All 8 staff responses logged; agent sets completion flag in Google Sheet column
Roster Drafting Agent detects the completion flag and begins drafting within 60 seconds
Drafting agent run log shows trigger received timestamp within 60 seconds of completion flag being written
T16
Handoff: Roster Drafting Agent conflict Slack message contains correct data
Draft roster with 2 overtime flags and 1 gap; Slack webhook configured for test channel
Slack message lists each flag with staff name, shift date, and reason; no raw JSON or unformatted data
Slack test channel receives one message; message body contains 3 distinct flag entries in readable format
T17
Handoff: manager approval in Google Sheet triggers Publication Agent
Roster Drafting Agent has written draft; approval cell updated to APPROVED manually
Publication Agent detects approval within 60 seconds and begins Deputy shift creation sequence
Publication Agent run log shows trigger detected; Deputy sandbox shift creation calls initiated within 60 seconds of approval
T18
Deputy shift data matches Google Sheet draft exactly
Draft roster in Sheet: 8 staff, specific shift dates and times per staff member
Each Deputy sandbox shift record matches the Sheet row for staff ID, date, start time, and end time
Field-by-field comparison of Sheet rows and Deputy API GET /shifts response shows zero discrepancies
T19
Xero employee ID lookup resolves correctly for all staff
8 staff in roster; all 8 have valid Xero employee IDs in mapping config
All 8 Xero timesheet entries created with correct employee IDs; no lookup errors in run log
Run log shows zero ID-lookup errors; Xero demo company timesheet count increases by 8
T20
Gmail availability email contains correct form link and is addressed to correct staff
Staff list of 5 in sandbox Sheet; each with unique email address
5 emails dispatched; each addressed to the individual staff email; form link in body resolves to the correct availability form URL
Gmail sandbox sent log shows 5 unique recipient addresses; link href in each email body matches the configured form URL
T21
Slack notification falls back to Gmail if staff Slack handle is missing
Publication Agent triggered; one staff member has no Slack handle in config
Agent sends Gmail shift notification to that staff member; logs the Slack fallback event; all other staff receive Slack message
Gmail sandbox shows one additional sent email for the affected staff member; run log contains one fallback event entry
T22
Full agent chain runs without manual intervention on a clean data set
Timer fires; 8 staff respond within 24 hours; no conflicts in draft
Entire workflow completes from timer to Deputy publication and staff notifications without any error or pause state
Run log shows all three agents completing with status: success; no Slack error alerts; Deputy sandbox contains correct shifts; Gmail sandbox contains correct notifications
Edge case tests cover scenarios outside the normal data flow. These are run in the same Phase 2 sandbox environment immediately after the integration tests above have passed.
ID
Scenario
Input
Expected Output
Pass Criteria
E01
Duplicate availability submission from same staff member
One staff member submits the availability form twice with different time slots
Agent retains the most recent submission and overwrites the earlier row in Google Sheet; logs a duplicate-detected event
Google Sheet contains exactly one row per staff member; duplicate-detected event present in run log; no error state triggered
E02
Availability form submitted with missing required fields
Form response received with name populated but all availability time slots left blank
Agent flags the record as incomplete in the Sheet; sends a targeted follow-up email to that staff member requesting resubmission
Sheet row contains incomplete flag in status column; Gmail sandbox shows one follow-up email to the affected staff member
E03
Google Sheets API unavailable during response-logging window
Form response received; Google Sheets API returns 503 for 10 minutes
Agent queues the write and retries at 2-minute intervals; after API recovers, writes the queued response; posts an availability-in-queue Slack alert
Response eventually written to Sheet; no data lost; Slack alert received during outage; run log shows retry attempts with timestamps
E04
Deputy API unavailable at time of roster publication
Manager approval set; Deputy API returns 503 across all retry attempts
Publication Agent exhausts retries (3 attempts with exponential back-off); posts critical Slack alert to manager; sets publication status to failed; does not send staff notifications
No shift records created in Deputy sandbox; Slack critical alert received; staff Gmail and Slack notifications not dispatched; run status: failed
E05
Manager does not approve roster within 48 hours
Draft roster written to Sheet; approval flag remains blank for 48 hours
Agent sends a reminder Slack message to the manager at the 48-hour mark; does not proceed to publication; waits for approval
Slack reminder message received in test channel at 48-hour mark; no Deputy shift creation calls made; agent remains in awaiting-approval state
E06
Zero staff available for a required shift day
Shift demand requires 2 staff on Monday; no staff submitted availability for Monday
Roster Drafting Agent marks Monday slots as unresolvable gaps; conflict summary flags Monday with reason: no available staff; Slack alert sent to manager
Conflict summary contains Monday gap entry; Slack alert specifies the date and required vs available count (2 vs 0); draft status set to needs-review
E07
Xero timesheet export attempted before pay-period close event fires
Publication Agent completes successfully mid-week; Xero export triggered prematurely by a misconfigured schedule
Agent detects that the pay-period close condition is not met; aborts the Xero export; logs a premature-trigger warning; no timesheet entries created
Xero demo company timesheet count unchanged; run log contains premature-trigger warning with timestamp; no error alert to manager (non-critical)
Test and QA PlanPage 3 of 4
FS-DOC-06Quality
04Phase 3 — end-to-end production test
Important before running Phase 3: Use an internal test email address (e.g. test-roster@[YourCompany.com]) for all staff notification fields. Do not use real staff email addresses or Slack handles during this run. After the test completes, void or delete all records created: remove the test shifts from Deputy, delete the Xero demo timesheet entries, and archive the test roster row in Google Sheets. The FullSpec team will confirm each cleanup action in the run log before the process owner reviews results.
Phase 3 tests the complete workflow against live production credentials. The FullSpec team executes each case in sequence and records the outcome. The process owner participates in T27, the final case, to review outputs, confirm the workflow behaves as agreed, and record approval. That approval is logged in the FullSpec confirmation record and closes the QA process.
ID
Scenario
Input
Expected Output
Pass Criteria
T23
Full end-to-end production run: timer fires through to staff notifications
Recurring timer fires against production schedule; test staff list of 3 internal team members with internal test email addresses; shift demand set to 1 staff per day for 5 days
Availability emails dispatched via live Gmail; responses logged to production Google Sheet; Roster Drafting Agent builds draft; no conflicts flagged; manager approval triggers publication; Deputy shifts created; Slack and Gmail notifications dispatched to internal test addresses
Each tool's production account shows the expected record: Gmail sent log, Google Sheet rows, Deputy shift entries, Slack messages in designated channel. Full run completes within 15 minutes of timer fire with no error states
T24
Award rule breach detected and flagged in production Slack channel
Test data configured to exceed the 5-consecutive-day limit for one test staff member
Roster Drafting Agent flags the breach in the conflict summary; live Slack channel receives the manager alert with staff name, breach type, and date range
Live Slack workspace shows one conflict alert message; message content matches the breach details in the Google Sheet conflict summary; draft status is needs-review
T25
Xero timesheet export runs correctly at pay-period close in production
Pay-period close event fires against production schedule; 3 test shifts confirmed in Deputy production account
3 timesheet entries created in live Xero organisation under the correct employee records with matching dates and hours
Xero production timesheet report shows 3 new entries; each entry matches the corresponding Deputy shift record; entries voided after verification
T26
Error log verification: all errors from T23 through T25 captured correctly
Run log from T23 through T25 reviewed in the automation platform
Log contains a timestamped entry for each action step across all three agents; no unhandled exceptions; any warnings show correct context
Log entry count matches expected step count for a 3-staff, 5-day run; no null or empty error fields; FullSpec team signs off log as clean
T27
Process owner review and approval: Operations Manager confirms workflow output meets requirements
Process owner (Operations Manager) reviews the production run outputs: Google Sheet roster, Deputy shift records, Slack notifications, Xero timesheet entries, and the run log summary presented by the FullSpec team
Process owner confirms that the roster logic, notification content, award-rule flagging, and payroll export all match the agreed requirements. Approval is recorded in the FullSpec confirmation log.
Process owner approval recorded in the FullSpec confirmation log. QA process closed. No separate signoff block required.
Once T27 is marked as passed and the FullSpec confirmation log is updated, the automation is cleared for go-live. Any outstanding items identified during Phase 3 must be resolved and re-tested before the go-live date of 7 July. Contact the FullSpec team at support@gofullspec.com with any questions about test outcomes or remediation steps.
Test and QA PlanPage 4 of 4