New failures — drift or new bugs 3
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
},regularization @journey › missed punch: manager approves and the day is rewritten (rows 4–5)
tests/journeys/al01-al02-attendance.spec.ts:100
TimeoutError: locator.click: Timeout 45000ms exceeded.
Call log:
- waiting for getByRole('dialog').filter({ hasText: /Correct a day|Which day/ }).last().getByRole('button', { name: 'Send for approval' })
- locator resolved to <button disabled type="submit" class="inline-flex shrink-0 items-center justify-center gap-1.5 whitespace-nowrap select-none rounded-md font-medium transition-colors duration-150 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 bg-brand text-on-brand hover:bg-brand-hover active:bg-brand-active shadow-xs h-8 px-3 text-sm [&_svg]:size-4">Send for approval</button>
- attempting click action
2 × waiting for element to be visible, enabled and stable
- element is not enabled
- retrying click action
- waiting 20ms
2 × waiting for element to be visible, enabled and stable
- element is not enabled
- retrying click action
- waiting 100ms
87 × waiting for element to be visible, enabled and stablelong leave routing @journey › leave of 3 days or more goes to the department head after the manager (row 14; was ISS-436, fixed 14 Oct)
tests/journeys/al04-al05-leave.spec.ts:164
Error: e1 POST /api/me/leave → 409 {"message":"Overlaps an existing pending/approved request"}Open bugs — still reproduce 12
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-14T20:42:53Z vs real UTC 2026-10-14T15:12:53.891Z
expect(received).toBeLessThan(expected)
Expected: < 10
Received: 329.98515
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-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).toHaveCount(expected) failed
Locator: locator('#main-content').getByText(/Off today/)
Expected: 0
Received: 1
Timeout: 30000ms
Call log:
- Expect "toHaveCount" locator('#main-content').getByText(/Off today/) with timeout 30000ms
- waiting for locator('#main-content').getByText(/Off today/)
63 × locator resolved to 1 element
- unexpected value "1"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:73
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/)
63 × 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-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:181
Error: e1 POST /api/me/leave → 409 {"message":"Overlaps an existing pending/approved request"}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