New failures — drift or new bugs 2
Not tied to a logged issue in the test. A baseline failure means the tenant configuration changed: the diff shows what. Triage each one: log it in ISSUES.md, revert the change, or accept it by updating the baseline.
leave policies @pr › policy set matches the reviewed baseline
tests/contract/policies.spec.ts:21
Error: expect(string).toMatchSnapshot(expected) failed
@@ -144,11 +144,11 @@
"name": "Paid Time Off — handbook 16.1",
"accrual": {
"rate": 1.25,
"frequency": "monthly",
"proration": true,
- "waitingDays": 30
+ "startNextMonth": true
},
"carryForward": {
"maxDays": 30
},attendance capture @journey › web clock-in and clock-out record the day against the shift (rows 1–3)
tests/journeys/al01-al02-attendance.spec.ts:15
Error: expect(locator).toBeVisible() failed
Locator: getByRole('dialog').filter({ hasText: /Clocking in at/ }).last().getByText(/Today:/)
Expected: visible
Timeout: 30000ms
Error: element(s) not found
Call log:
- Expect "toBeVisible" getByRole('dialog').filter({ hasText: /Clocking in at/ }).last().getByText(/Today:/) with timeout 30000ms
- waiting for getByRole('dialog').filter({ hasText: /Clocking in at/ }).last().getByText(/Today:/)
- found getByRole('dialog').filter({ hasText: 'Start today\'s clock' }), intercepting action to run the handler
- locator handler has finished, waiting for getByRole('dialog').filter({ hasText: 'Start today\'s clock' }) to be hidden
- interception handler has finished, continuingOpen bugs — still reproduce 14
Logged in ISSUES.md. Each assertion states the correct behaviour; the error shows what the platform did instead.
known bugs: data integrity @pr @known-bug › ISS-422 · punch times are stored as real UTC
ISS-422: the server stores IST wall time with a Z suffix (5h30 ahead)
ISS-422 · tests/contract/data-integrity.spec.ts:15
Error: server "now" 2026-10-15T00:14:28Z vs real UTC 2026-10-14T18:44:28.537Z
expect(received).toBeLessThan(expected)
Expected: < 10
Received: 329.99105
known bugs: data integrity @pr @known-bug › ISS-440 · nobody is credited leave types restricted to another gender, or more than the yearly entitlement
ISS-440: male employees hold Maternity Leave; Wedding/Floating/Bereavement credited twice
ISS-440 · tests/contract/data-integrity.spec.ts:22
Error: expect(received).toEqual(expected) // deep equality
- Expected - 1
+ Received + 6
- Array []
+ Array [
+ "Aarav Krishnamurthy.: maternity 182",
+ "Kavya Raghunathan: paternity 5",
+ "Test Interviewer One: paternity 5",
+ "Test Interviewer Two: maternity 182",
+ ]
known bugs: data integrity @pr @known-bug › ISS-446 · no PTO is credited before the policy’s waiting period ends
ISS-446: a 1 Oct joiner was credited October PTO on 9 Oct, inside the waiting period (waitingDays 30, now startNextMonth)
ISS-446 · tests/contract/data-integrity.spec.ts:45
Error: expect(received).toEqual(expected) // deep equality
- Expected - 1
+ Received + 3
- Array []
+ Array [
+ "2026-10-09 1.25 policy_entitlement:2026-10",
+ ]
known bugs: data integrity @pr @known-bug › ISS-445 · "Your shift" shows the shift on a working day, not "Off today"
ISS-445: the panel says "Off today — enjoy the day" on working days
ISS-445 · tests/contract/data-integrity.spec.ts:62
Error: expect(locator).not.toContainText(expected) failed
Locator: locator('#main-content').getByText('Your shift', { exact: true }).locator('xpath=ancestor::*[3]')
Expected pattern: not /Off today/
Received string: "Your shiftFrom your team’s work scheduleSwap a shiftOff today — enjoy the dayGeneral hoursSwap with QA Employee Two · in 6 days · cancelledSwap with QA Employee Two · 12 Nov · cancelledSwap with QA Employee Two · 22 Oct · rejectedSwap with QA Employee Two · 12 Nov · approvedSwap with QA Employee Two · 12 Nov · cancelledSwap with QA Employee Two · 29 Oct · cancelledSwap with QA Employee Two · 4 Nov · rejectedSwap with QA Employee Two · 11 Nov · approvedSwap with QA Employee Two · 11 Nov · cancelledSwap with QA Employee Two · 16 Nov · cancelledSwap with QA Employee Two · 27 Oct · rejectedSwap with QA Employee Two · 26 Oct · cancelledSwap with QA Employee Two · 28 Oct · cancelledSwap with QA Employee Two · 17 Nov · cancelledSwap with QA Employee Two · 4 Nov · rejectedSwap with QA Employee Two · 18 Nov · approvedSwap with QA Employee Two · 3 Nov · cancelledSwap with QA Employee Two · 18 Nov · cancelledSwap with QA Employee Two · 11 Nov · rejectedSwap with QA Employee Two · 23 Oct · approvedSwap with QA Employee Two · 23 Oct · approvedSwap with QA Employee Two · 22 Oct · cancelledSwap with QA Employee Two · 12 Nov · cancelledSwap with QA Employee Two · 22 Oct · rejectedSwap with QA Employee Two · in 6 days · approved"
Timeout: 30000ms
Call log:
- Expect "not toContainText" locator('#main-content').getByText('Your shift', { exact: true }).locator('xpath=ancestor::*[3]') with timeout 30000ms
- waiting for locator('#main-content').getByText('Your shift', { exact: true }).locator('xpath=ancestor::*[3]')
63 × locator resolved to <div class="rounded-lg border border-edge bg-surface shadow-xs">…</div>
- unexpected value "Your shiftFrom your team’s work scheduleSwap a shiftOff today — enjoy the dayGeneral hoursSwap with QA Employee Two · in 6 days · cancelledSwap with QA Employee Two · 12 Nov · cancelledSwap with QA Employee Two · 22 Oct · rejectedSwap with QA Employee Two · 12 Nov · approvedSwap with QA Employee Two · 12 Nov · cancelledSwap with QA Employee Two · 29 Oct · cancelledSwap with QA Employee Two · 4 Nov · rejectedSwap with QA Employee Two · 11 Nov · approvedSwap with QA Employee Two · 11 Nov · cancelledSwap with QA Employee Two · 16 Nov · cancelledSwap with QA Employee Two · 27 Oct · rejectedSwap with QA Employee Two · 26 Oct · cancelledSwap with QA Employee Two · 28 Oct · cancelledSwap with QA Employee Two · 17 Nov · cancelledSwap with QA Employee Two · 4 Nov · rejectedSwap with QA Employee Two · 18 Nov · approvedSwap with QA Employee Two · 3 Nov · cancelledSwap with QA Employee Two · 18 Nov · cancelledSwap with QA Employee Two · 11 Nov · rejectedSwap with QA Employee Two · 23 Oct · approvedSwap with QA Employee Two · 23 Oct · approvedSwap with QA Employee Two · 22 Oct · cancelledSwap with QA Employee Two · 12 Nov · cancelledSwap with QA Employee Two · 22 Oct · rejectedSwap with QA Employee Two · in 6 days · approved"
known bugs: data integrity @pr @known-bug › ISS-447 · the Service Leave policy form shows its rule without a validation error
ISS-447: blank accrual and "Entitlement can't be negative" on open
ISS-447 · tests/contract/data-integrity.spec.ts:76
Error: expect(locator).toHaveCount(expected) failed
Locator: getByRole('dialog').filter({ hasText: /Edit policy/ }).last().getByText(/Entitlement can't be negative/)
Expected: 0
Received: 1
Timeout: 30000ms
Call log:
- Expect "toHaveCount" getByRole('dialog').filter({ hasText: /Edit policy/ }).last().getByText(/Entitlement can't be negative/) with timeout 30000ms
- waiting for getByRole('dialog').filter({ hasText: /Edit policy/ }).last().getByText(/Entitlement can't be negative/)
62 × locator resolved to 1 element
- unexpected value "1"known gaps: permissions @pr @known-bug › ISS-444 · mgr can save the roster it is shown (rows 36–37)
ISS-444: reporting managers, department heads and HR SPOC are refused (403) on roster saves
ISS-444 · tests/contract/permissions.spec.ts:41
Error: expect(received).toBe(expected) // Object.is equality
Expected: false
Received: true
known gaps: permissions @pr @known-bug › ISS-444 · dh can save the roster it is shown (rows 36–37)
ISS-444: reporting managers, department heads and HR SPOC are refused (403) on roster saves
ISS-444 · tests/contract/permissions.spec.ts:41
Error: expect(received).toBe(expected) // Object.is equality
Expected: false
Received: true
known gaps: permissions @pr @known-bug › ISS-444 · spoc can save the roster it is shown (rows 36–37)
ISS-444: reporting managers, department heads and HR SPOC are refused (403) on roster saves
ISS-444 · tests/contract/permissions.spec.ts:41
Error: expect(received).toBe(expected) // Object.is equality
Expected: false
Received: true
leave policies @pr › PTO: 1.25 days a month after 30 days, carry-forward 30, LOP fallback (rows 48–51, 60)
ISS-450: since 14 Oct the PTO policy has startNextMonth instead of the 30-day waiting period
ISS-450 · tests/contract/policies.spec.ts:28
Error: expect(received).toMatchObject(expected)
- Expected - 1
+ Received + 0
Object {
"frequency": "monthly",
"rate": 1.25,
- "waitingDays": 30,
}known bugs: workflows @pr @known-bug › ISS-452 · the long-leave threshold used by leave approval is a visible parameter
ISS-452: routing works since 14 Oct, but param lv.long_leave_days is still not defined, so the 3-day threshold is a hidden default no one can see or change
ISS-452 · tests/contract/workflows.spec.ts:105
Error: expect(received).toContain(expected) // indexOf
Expected value: "lv.long_leave_days"
Received array: ["ext.ceo_pack_sla", "ext.clearance_trigger", "ext.counteroffer_issue_sla", "ext.counteroffer_response_sla", "ext.damage_assessment_sla", "ext.escalate_to_hr_sla", "ext.exit_docs_sla", "ext.ffs_clear_sla", "ext.ffs_gratuity_target", "ext.ffs_l1", …]
known bugs: workflows @pr @known-bug › ISS-441 · earning comp-off does not require an existing comp-off balance
ISS-441: Comp-Off Request rejects when employee.balance <= 0 and debits the ledger on approval
ISS-441 · tests/contract/workflows.spec.ts:112
Error: expect(received).toBe(expected) // Object.is equality
Expected: false
Received: true
known bugs: leave @journey @known-bug › ISS-453 · a pending Leave Without Pay request can be withdrawn (row 18)
ISS-453: withdrawing a pending LWP request is refused with 403 PROTECTED_RUN ("forced by the platform tier")
ISS-453 · tests/journeys/al04-al05-leave.spec.ts:181
Error: timed out waiting for request withdrawn
known bugs: leave @journey @known-bug › ISS-437/439 · approved leave with confirmed unpaid days is posted and stays approved (row 15)
ISS-437/439: post_ledger fails with "Insufficient balance" and the request ends rejected
ISS-437 · ISS-439 · tests/journeys/al04-al05-leave.spec.ts:201
Error: timed out waiting for request decided
known bugs: comp-off @journey @known-bug › ISS-441 · a request to earn comp-off for a weekend reaches the manager (rows 29–30)
ISS-441: Request comp-off is rejected for having no comp-off balance
ISS-441 · tests/journeys/al08-al09-compoff-balances.spec.ts:35
Error: timed out waiting for manager task
Gaps against the workflow sheet 7
The Attendance & Leave sheet asks for this; the platform does not do it (GAPS.md).
known gaps: permissions @pr @known-bug › GAPS row 33 · HR SPOC can adjust special leave balances
HR SPOC has no balance-adjust right on this tenant (GAPS.md row 33)
GAPS.md row 33 · tests/contract/permissions.spec.ts:46
Error: expect(received).toBe(expected) // Object.is equality
Expected: false
Received: true
known gaps: permissions @pr @known-bug › GAPS row 34 · HR SPOC can change leave configuration
HR SPOC is view-only on leave policies on this tenant (GAPS.md row 34)
GAPS.md row 34 · tests/contract/permissions.spec.ts:50
Error: expect(received).toBe(expected) // Object.is equality
Expected: false
Received: true
known gaps: configuration @pr @known-bug › GAPS row 1 · days under 8 hours count as half days
Half-day cut-off is 4 hours on this tenant; the sheet asks for 8 (GAPS.md row 1)
tests/contract/policies.spec.ts:76
Error: expect(received).toBe(expected) // Object.is equality
Expected: 8
Received: 4
known gaps: work from home @journey @known-bug › GAPS row 22 · back-dated work from home is refused
Back-dated WFH is accepted and sent to the manager (GAPS.md row 22)
GAPS.md row 22 · tests/journeys/al06-wfh.spec.ts:79
Error: expect(received).toBeGreaterThanOrEqual(expected)
Expected: >= 400
Received: 201
known gaps: work from home @journey @known-bug › GAPS row 25 · long WFH gets an HR SPOC review
No HR SPOC step in the WFH workflow (GAPS.md row 25)
GAPS.md row 25 · tests/journeys/al06-wfh.spec.ts:87
Error: timed out waiting for HR SPOC task
known gaps: shifts @journey @known-bug › GAPS row 43 · the teammate is asked to accept a swap first
No peer acceptance: the swap goes straight to the manager (GAPS.md row 43)
GAPS.md row 43 · tests/journeys/al10-al11-shifts.spec.ts:87
Error: timed out waiting for teammate task
known gaps: shifts @journey @known-bug › GAPS row 42 · a swap between identical shifts is refused
Eligibility does not check identical shifts (GAPS.md row 42)
GAPS.md row 42 · tests/journeys/al10-al11-shifts.spec.ts:100
Error: expect(received).toBeGreaterThanOrEqual(expected)
Expected: >= 400
Received: 201