SatelliteHR e2e — issues found

15 Oct 2026, 06:55 IST · qa.satellitehr.com · Attendance & Leave + Feedback tracker · full test report · BUGS.md · bugs.json

0 new failures · 0 regressions · 66 open issues · 0 sheet gaps · 0 no longer reproduce · 50 working · 6 not verified this run

215 tests: 108 passed · 100 failed · 7 skipped · run failed

IssueDescriptionModuleSubmoduleStatusExpected resultActual resultTotal test coverage
SHR-008The system is not showing the Clock in and Clock out functionalities when logging in and logging out of the system. And attendance hours are not being capturedAttendanceAttendanceOpen — confirmed (1 of 4 checks fail)signing out while on the clock offers to clock out first; the clock in / clock out control is on screen for the employee; worked hours are captured from the punches (first in to last out, less the break); a day with a full day of hours is not marked Half day
2026-10-09: 10.5 h worked (half day is below 4 h) but the day reads "half_day" expect(received).not.toBe(expected) // Object.is equality Expected: not "half_day"
full error

SHR-008 · a day with a full day of hours is not marked Half day

Error: 2026-10-09: 10.5 h worked (half day is below 4 h) but the day reads "half_day"

expect(received).not.toBe(expected) // Object.is equality

Expected: not "half_day"
4 tests: 1 fail · 3 pass
tests
  • ✓ SHR-008 · signing out while on the clock offers to clock out first tests/feedback/attendance/attendance-journeys.spec.ts:16
  • ✓ SHR-008 · the clock in / clock out control is on screen for the employee tests/feedback/attendance/attendance-pr.spec.ts:18
  • ✓ SHR-008 · worked hours are captured from the punches (first in to last out, less the break) tests/feedback/attendance/attendance-pr.spec.ts:28
  • ✗ SHR-008 · a day with a full day of hours is not marked Half day tests/feedback/attendance/attendance-pr.spec.ts:40
SHR-014Issue: For some dates in September, regularisation can be applied for directly. However, for October, the direct regularisation option is available only for the current date, while other dates can be regularised only through “Request a Correction. -ishita.bhat…
moretacharya@opsmaven.test
AttendanceAttendanceOpen — confirmed (1 of 2 checks fail)The regularisation process and available options should be consistent across applicable dates, based on the defined attendance/regularisation rules.
QA Employee One joined on 2026-10-01; the calendar still offers these earlier days for correction (the server then refuses them) expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 23 - Array [] + Array [ + "Tuesday 1 September: no attendance recorded — request a correction", + "Wednesday 2 September: no attendance recorded — request a correction", + "Thursday …
more3 September: no attendance recorded — request a correction", + "Monday 7 September: no attendance recorded — request a correction",
full error & screenshots

SHR-014 · days before the employee joined are not offered for correction

Error: QA Employee One joined on 2026-10-01; the calendar still offers these earlier days for correction (the server then refuses them)

expect(received).toEqual(expected) // deep equality

- Expected  -  1
+ Received  + 23

- Array []
+ Array [
+   "Tuesday 1 September: no attendance recorded — request a correction",
+   "Wednesday 2 September: no attendance recorded — request a correction",
+   "Thursday 3 September: no attendance recorded — request a correction",
+   "Monday 7 September: no attendance recorded — request a correction",
+   "Tuesday 8 September: no attendance recorded — request a correction",
+   "Wednesday 9 September: no attendance recorded — request a correction",
+   "Thursday 10 September: no attendance recorded — request a correction",
+   "Friday 11 September: no attendance recorded — request a correction",
+   "Monday 14 September: no attendance recorded — request a correction",
+   "Tuesday 15 September: no attendance recorded — request a correction",
+   "Wednesday 16 September: no attendance recorded — request a correction",
+   "Thursday 17 September: no attendance recorded — request a correction",
+   "Friday 18 September: no attendance recorded — request a correction",
+   "Monday 21 September: no attendance recorded — request a correction",
+   "Tuesday 22 September: no attendance recorded — request a correction",
+   "Wednesday 23 September: no attendance recorded — request a correction",
+   "Thursday 24 September: no attendance recorded — request a correction",
+   "Friday 25 September: no attendance recorded — request a correction",
+   "Monday 28 September: no attendance recorded — request a correction",
+   "Tuesday 29 September: no attendance recorded — request a correction",
+   "Wednesday 30 September: no attendance recorded — request a correction",
+ ]
screenshot at failure
2 tests: 1 fail · 1 pass
tests
  • ✓ SHR-014 · every past working day of the month can be corrected straight from the calendar tests/feedback/attendance/attendance-pr.spec.ts:52
  • ✗ SHR-014 · days before the employee joined are not offered for correction tests/feedback/attendance/attendance-pr.spec.ts:71
SHR-069Floating Holidays and PTO are being credited as soon as the employee has joined these should be credited once the employee completes 30 days All special leaves to be credited by HR and should not be auto assigned(Bereavement leaves, Maternity leaves, Examinati…
moreon Leaves, Paternity leaves)
AttendanceAttendanceOpen — confirmedFloating Holidays and PTO are being credited as soon as the employee has joined these should be credited once th eemployee completes 30 days All special leaves to be credited by HR and should not be auto assigned(Bereavement leaves, Maternity leaves, Examinati…
moreon Leaves, Paternity leaves)
credits inside the first 30 days expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 4 - Array [] + Array [ + "e2 (joined 2026-10-01): +2.00 on 2026-10-09 (policy_entitlement:2026)", + "e3 (joined 2026-10-01): +2.00 on 2026-10-09 (policy_entitlement:2026)", + ] credits inside the first 30 days expect(received).toEqual(expected) // deep equality - Expected - 1 + …
moreReceived + 4 - Array [] + Array [ + "e2 (joined 2026-10-01): +1.25 on 2026-10-09 (policy_entitlement:2026-10)", + "e3 (joined 2026-10-01): +1.25 on 2026-10-09 (policy_entitlement:2026-10)", + ] employees holding automatically accrued special leave, e.g. Aarav Krishnamurthy.: BLE accrued 10; Aarav Krishnamurthy.: EXAMINATION-LEAVE accrued 5; Aarav Krishnamurthy.: MATERNITY-LEAVE accrued 182; Aarav Krishnamurthy.: PATERNITY-LEAVE accrued 5; Aditya Ranganathan: BLE accrued 10; Aditya Ranganathan: EXAMINATION-LEAVE accrued 5 expect(received).toBe(expected) // Object.is equality Expected: 0 Received: 156
full error

SHR-069 · FLOATING-HOLIDAYS is not credited before the employee completes 30 days

Error: credits inside the first 30 days

expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 4

- Array []
+ Array [
+   "e2 (joined 2026-10-01): +2.00 on 2026-10-09 (policy_entitlement:2026)",
+   "e3 (joined 2026-10-01): +2.00 on 2026-10-09 (policy_entitlement:2026)",
+ ]

SHR-069 · PAID-TIME-OFF-PTO is not credited before the employee completes 30 days

Error: credits inside the first 30 days

expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 4

- Array []
+ Array [
+   "e2 (joined 2026-10-01): +1.25 on 2026-10-09 (policy_entitlement:2026-10)",
+   "e3 (joined 2026-10-01): +1.25 on 2026-10-09 (policy_entitlement:2026-10)",
+ ]

SHR-069 · special leaves (bereavement, maternity, examination, paternity) are never credited automatically

Error: employees holding automatically accrued special leave, e.g. Aarav Krishnamurthy.: BLE accrued 10; Aarav Krishnamurthy.: EXAMINATION-LEAVE accrued 5; Aarav Krishnamurthy.: MATERNITY-LEAVE accrued 182; Aarav Krishnamurthy.: PATERNITY-LEAVE accrued 5; Aditya Ranganathan: BLE accrued 10; Aditya Ranganathan: EXAMINATION-LEAVE accrued 5

expect(received).toBe(expected) // Object.is equality

Expected: 0
Received: 156
3 tests: 3 fail
tests
  • ✗ SHR-069 · FLOATING-HOLIDAYS is not credited before the employee completes 30 days tests/feedback/leave/leave-rules.spec.ts:267
  • ✗ SHR-069 · PAID-TIME-OFF-PTO is not credited before the employee completes 30 days tests/feedback/leave/leave-rules.spec.ts:267
  • ✗ SHR-069 · special leaves (bereavement, maternity, examination, paternity) are never credited automatically tests/feedback/leave/leave-rules.spec.ts:279
SHR-123Attendance report extracted from Satellite HR currently doesnt contain the Loss of pay details or the employee details in the single row with the whole month attendanceAttendanceAttendance details report/LOP reportOpen — confirmedAttendance details Report or Loss of Pay report and the Unplanned leave report is to be added in the Reports tab, currently we dont have a single report nor the module in filter of Attendance. Attaching the sample attaendance report format which has each emplo…
moreyee's report in the single row with the whole month date wise, leave type wise or the LWP
admin: Reports modules are Employees (employees), Announcements (announcements), Assets (assets), Reviews (performance), Goals (performance), Exit cases (exit), Transfers (transfers), Onboarding (onboarding), Asset movements (assets), Form responses (templates) — no Attendance expect(received).not.toEqual(expected) // deep equality Expected: not [] muster columns: Employee No, Employee, Departmen…
moret, Present, WFH / on duty, Half day, Absent, Leave, Holiday / weekly off, Worked hours, OT hours — no loss-of-pay column expect(received).not.toEqual(expected) // deep equality Expected: not []
full error & screenshots

SHR-123 · Reports offers Attendance (and leave / loss of pay) as a module

Error: admin: Reports modules are Employees (employees), Announcements (announcements), Assets (assets), Reviews (performance), Goals (performance), Exit cases (exit), Transfers (transfers), Onboarding (onboarding), Asset movements (assets), Form responses (templates) — no Attendance

expect(received).not.toEqual(expected) // deep equality

Expected: not []

SHR-123 · the monthly attendance report shows leave by type and loss of pay, one row per employee

Error: muster columns: Employee No, Employee, Department, Present, WFH / on duty, Half day, Absent, Leave, Holiday / weekly off, Worked hours, OT hours — no loss-of-pay column

expect(received).not.toEqual(expected) // deep equality

Expected: not []
screenshot at failure
2 tests: 2 fail
tests
  • ✗ SHR-123 · Reports offers Attendance (and leave / loss of pay) as a module tests/feedback/attendance/attendance-pr.spec.ts:185
  • ✗ SHR-123 · the monthly attendance report shows leave by type and loss of pay, one row per employee tests/feedback/attendance/attendance-pr.spec.ts:195
SHR-124Leave report with employee details and Leave type and the format is shared in the screenshots TabAttendanceAttendance details report/LOP reportOpen — confirmedLeave report should contant employee details, from date, to date, accrual balance for that leave type, opening balance and closing balance approval status
no single download has every column — leave-requests-pending-2026-10-15.csv: missing opening balance, accrual, closing balance | leave-balances-2026-10-15.csv: missing from date, to date, approval status expect(received).toBe(expected) // Object.is equality Expected: true Received: false
full error & screenshots

SHR-124 · one leave report has employee details, from/to dates, opening, accrual and closing balance, and approval status

Error: no single download has every column — leave-requests-pending-2026-10-15.csv: missing opening balance, accrual, closing balance | leave-balances-2026-10-15.csv: missing from date, to date, approval status

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false
screenshot at failure
1 test: 1 fail
tests
  • ✗ SHR-124 · one leave report has employee details, from/to dates, opening, accrual and closing balance, and approval status tests/feedback/leave/leave-rules.spec.ts:357
SHR-004Pre-boarding Checklist listed under employee creation through Recruitment is missed for employees created from Organization module. Irrespective of the module from which a new joinee is added, preboarding steps are same for all full-time employeesEmployee LifecycleNew Employee CreationOpen — confirmedan employee created from Organization gets the same pre-boarding checklist as a recruitment hire
FB Test Org Joiner Cacgbabf (created from Organization, joining today) has an onboarding record — instead there is none, so no pre-boarding checklist was started expect(received).toBeGreaterThan(expected) Expected: > 0 Received: 0
full error

SHR-004 · an employee created from Organization gets the same pre-boarding checklist as a recruitment hire

Error: FB Test Org Joiner Cacgbabf (created from Organization, joining today) has an onboarding record — instead there is none, so no pre-boarding checklist was started

expect(received).toBeGreaterThan(expected)

Expected: > 0
Received:   0
1 test: 1 fail
tests
  • ✗ SHR-004 · an employee created from Organization gets the same pre-boarding checklist as a recruitment hire tests/feedback/onboarding/new-joiner.spec.ts:50
SHR-005Employees created today as New Employee from Organization Module whose DOJ is today and whose preboarding steps are pending(Document Submission) - No trigger on their home page or notifications on their email or pending tasks diplayed on their home pageEmployee LifecycleNew Employee CreationOpen — confirmedOnboarding activities - Document Collection is not getting triggered. But Onboarding is shown as complete
document collection is triggered for FB Test Org Joiner Cacgbabf on the joining day — instead no document task exists (no onboarding record at all) expect(received).not.toHaveLength(expected) Expected length: not 0 Received array: [] an HR owner (HR Manager, HR Head or HR SPOC) has FB Test Org Joiner Cacgbabf's onboarding tasks under "Your onboarding tasks" — instead none of them does expect…
more(received).not.toHaveLength(expected) Expected length: not 0 Received array: []
full error

SHR-005 · a joiner starting today gets document-collection tasks

Error: document collection is triggered for FB Test Org Joiner Cacgbabf on the joining day — instead no document task exists (no onboarding record at all)

expect(received).not.toHaveLength(expected)

Expected length: not 0
Received array:      []

SHR-005 · the joiner’s pending onboarding tasks show on the owners’ Home

Error: an HR owner (HR Manager, HR Head or HR SPOC) has FB Test Org Joiner Cacgbabf's onboarding tasks under "Your onboarding tasks" — instead none of them does

expect(received).not.toHaveLength(expected)

Expected length: not 0
Received array:      []
2 tests: 2 fail
tests
  • ✗ SHR-005 · a joiner starting today gets document-collection tasks tests/feedback/onboarding/new-joiner.spec.ts:58
  • ✗ SHR-005 · the joiner’s pending onboarding tasks show on the owners’ Home tests/feedback/onboarding/new-joiner.spec.ts:64
SHR-006I have created the three test IDs for Aarav Testman, Nisha Sample, and Rohan Demo. However, the credentials have not been generated in the HR CC account. I also went to Settings > Users and re-shared the invite, but it is still not showing upEmployee LifecycleNew Employee CreationOpen — confirmed (1 of 2 checks fail)the reviewer's three test employees received working sign-ins; the Employees list says "Can sign in" only for people whose sign-in actually works
"Can sign in" shown for people who never accepted their invitation or have no account here expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 16 - Array [] + Array [ + "Abhishek Kumar (account: none in this company)", + "Aditya Ranganathan (account: invited)", + "Anant (account: invited)", + "Kabir Anand (account: none in this company)",
full error

SHR-006 · the Employees list says "Can sign in" only for people whose sign-in actually works

Error: "Can sign in" shown for people who never accepted their invitation or have no account here

expect(received).toEqual(expected) // deep equality

- Expected  -  1
+ Received  + 16

- Array []
+ Array [
+   "Abhishek Kumar (account: none in this company)",
+   "Aditya Ranganathan (account: invited)",
+   "Anant (account: invited)",
+   "Kabir Anand (account: none in this company)",
+   "Meera Kulkarni (account: invited)",
+   "Neera bv.aj (account: invited)",
+   "OBT Invite Bulk (account: invited)",
+   "OBT Invite Failure (account: invited)",
+   "Onboarding Management (account: invited)",
+   "Pramod Singh (account: invited)",
+   "Probe Leaver (Demo) (account: invited)",
+   "Rhea Menon (Demo) (account: invited)",
+   "Ritika Chourasia (account: invited)",
+   "Role Test (account: invited)",
+ ]
2 tests: 1 fail · 1 pass
tests
  • ✓ SHR-006 · the reviewer's three test employees received working sign-ins tests/feedback/employee-creation/positions-import-access.spec.ts:128
  • ✗ SHR-006 · the Employees list says "Can sign in" only for people whose sign-in actually works tests/feedback/employee-creation/positions-import-access.spec.ts:139
SHR-007The onboarding activities for the test employees have not yet been completed, but the system is already showing the onboarding status as “Complete.”Employee LifecycleNew Employee CreationOpen — confirmedNew joinees does not show onboarding “Complete” while nothing has been done
the Onboarding column reflects that no onboarding task is done (API: status null, 0/0 tasks) — instead it says "Complete" expect(received).not.toMatch(expected) Expected pattern: not /^Complete$/ Received string: "Complete"
full error & screenshots

SHR-007 · New joinees does not show onboarding “Complete” while nothing has been done

Error: the Onboarding column reflects that no onboarding task is done (API: status null, 0/0 tasks) — instead it says "Complete"

expect(received).not.toMatch(expected)

Expected pattern: not /^Complete$/
Received string:      "Complete"
screenshot at failure
1 test: 1 fail
tests
  • ✗ SHR-007 · New joinees does not show onboarding “Complete” while nothing has been done tests/feedback/onboarding/new-joiner.spec.ts:76
SHR-009Error has occured as soon as we click on the employee searched on global search box on homepageEmployee LifecycleEmployee SearchOpen — confirmed (2 of 3 checks fail)clicking an employee found in global search opens their profile without an error; the profile opened from search shows the employee's position, location and manager; a reporting manager can find their own team member in global search
the header shows "Delivery Manager" (not "No position") expect(locator).toHaveText(expected) failed Locator: locator('#main-content').getByText(/Delivery Manager|No position/).first() Expected pattern: /Delivery Manager/ Received string: "No position · Operations" Timeout: 30000ms 63 × locator resolved to <p class="mt-0.5 text-sm text-ink-2">No position · Operations</p> QA Manager's search a…
morenswers 403 {"code":"FORBIDDEN","message":"You do not have permission to do this","requiredPermission":["settings.saved_searches.view"],"requestId":"c9e4d046-7c69-4b6e-9551 expect(received).toBe(expected) // Object.is equality Expected: 200 Received: 403
full error & screenshots

SHR-009 · the profile opened from search shows the employee's position, location and manager

Error: the header shows "Delivery Manager" (not "No position")

expect(locator).toHaveText(expected) failed

Locator: locator('#main-content').getByText(/Delivery Manager|No position/).first()
Expected pattern: /Delivery Manager/
Received string:  "No position · Operations"
Timeout: 30000ms

Call log:
  - the header shows "Delivery Manager" (not "No position") locator('#main-content').getByText(/Delivery Manager|No position/).first() with timeout 30000ms
  - waiting for locator('#main-content').getByText(/Delivery Manager|No position/).first()
    63 × locator resolved to <p class="mt-0.5 text-sm text-ink-2">No position · Operations</p>
       - unexpected value "No position · Operations"

SHR-009 · a reporting manager can find their own team member in global search

Error: QA Manager's search answers 403 {"code":"FORBIDDEN","message":"You do not have permission to do this","requiredPermission":["settings.saved_searches.view"],"requestId":"c9e4d046-7c69-4b6e-9551

expect(received).toBe(expected) // Object.is equality

Expected: 200
Received: 403
screenshot at failure
3 tests: 2 fail · 1 pass
tests
  • ✓ SHR-009 · clicking an employee found in global search opens their profile without an error tests/feedback/organization/organization.spec.ts:22
  • ✗ SHR-009 · the profile opened from search shows the employee's position, location and manager tests/feedback/organization/organization.spec.ts:37
  • ✗ SHR-009 · a reporting manager can find their own team member in global search tests/feedback/organization/organization.spec.ts:53
SHR-013IT Checklist not getting triggered for today's new joinersEmployee LifecycleOnboardingOpen — confirmed (1 of 2 checks fail)Checklists not getting triggered for Onboarding Stakeholders. This needs to be notified to them and displayed on their homeage as pending
QA IT has FB Test Org Joiner Cacgbabf's IT checklist (Home "Your onboarding tasks" or Inbox) on the joining day — instead it has nothing expect(received).toBeGreaterThan(expected) Expected: > 0 Received: 0
full error

SHR-013 · the IT team gets the IT checklist for a joiner starting today

Error: QA IT has FB Test Org Joiner Cacgbabf's IT checklist (Home "Your onboarding tasks" or Inbox) on the joining day — instead it has nothing

expect(received).toBeGreaterThan(expected)

Expected: > 0
Received:   0
2 tests: 1 fail · 1 pass
tests
  • ✗ SHR-013 · the IT team gets the IT checklist for a joiner starting today tests/feedback/onboarding/new-joiner.spec.ts:90
  • ✓ SHR-013 · once onboarding starts, IT is notified and has the IT items on Home tests/feedback/onboarding/new-joiner.spec.ts:98
SHR-033Vinay Yenduri was created from the recruitment module and sent to Onboarding. The workflow of document collection and checklists to Onboarding Stakeholders hasn't been triggered. Nothing in the Home Page, Inbox, or notifications. Checklist is displayed as 0/0 …
morecompleted and for a few employees, without any assignment or action, Onboarding is displayed as 5/5 completed upon creation.
Employee LifecyclePre-boardingOpen — confirmed (1 of 2 checks fail)Once a candidate's offer letter is released by the TA Team, the candidate is moved to the Pre-boarding stage. There are a checklist of actions pending during pre-boarding. The Onboarding stakeholder checklist needs to be triggered and displayed in pending task…
mores+Home Screen of the respective stakeholders buckets - a. Document Collection from Candidate - Govt IDs(Aadhar Card, PAN Card, Passport), Bank Document(Cancelled Cheque/Header of Bank Statement/Cover Page of Passbook) , Education Documents(10th Marks Memo, Intermediate Marks UG Memo, PG Memo), Employment Documents(Offer, Hike and Relieving Letters), Signed Offer Letter, Form 11 and PF Declaration, Gratuity Nomination, Benefits Forms with date and timestamp and digital signature(VPF, NPS, Sodexo, GMC, GPA), HD Photograph, Form (Professional Bio for welcome email, Hobbies, Father's Name, DOB, Name as per Aadhar, Name as per PAN, Name as per Bank Document, Present Address, Current Address, Blood Group[drop down], Emergency Contact Name, Phone Number and address, Declaration on deductions and accuracy of information) b. Reporting Manager(Buddy Assignment, KRAs assignment, Stakeholder List for Introductory Meetings, 30-day KT Plan), Tools Configuration, Office Access and Assets Provision (Bangalore Office) c. HR - Document Verification and checklist monitoring of other stakeholders as the owner of Onboarding d. IT - IT Asset Preparation, DevOps and IT Tools Provisioning e. Admin - Hyd Office - Welcome Kit, Office Tour, ID Card, Seat Allocation Remote/Bangalore - Welcome Kit, IT Assets
HR SPOC can see which checklist a joiner gets (no "(unavailable)" picker: the checklist list returns 403 templates.view) expect(received).toBe(expected) // Object.is equality Expected: 0 Received: 1
full error & screenshots

SHR-033 · no recruitment hire sits in onboarding with an empty 0/0 checklist

Error: HR SPOC can see which checklist a joiner gets (no "(unavailable)" picker: the checklist list returns 403 templates.view)

expect(received).toBe(expected) // Object.is equality

Expected: 0
Received: 1
screenshot at failure
2 tests: 1 fail · 1 pass
tests
  • ✓ SHR-033 · started with the stakeholder checklist, each stakeholder gets their own items tests/feedback/onboarding/new-joiner.spec.ts:112
  • ✗ SHR-033 · no recruitment hire sits in onboarding with an empty 0/0 checklist tests/feedback/onboarding/onboarding-board.spec.ts:63
SHR-039Clarification Required: The system currently appears to allow only one role to be assigned to an employee. However, an employee may perform multiple responsibilities simultaneously. For example, an employee can hold the position of HR Manager for the organisat…
moreion while also being the Reporting Manager for members of the HR team.
Employee LifecycleRole CreationOpen — confirmedan employee can hold more than one role (e.g. HR Manager and Reporting Manager); Settings → Roles lets a user be a member of a second role
both roles stay selected; the Role field shows "Reporting Manager" expect(received).toBe(expected) // Object.is equality Expected: true Received: false adding someone to a role keeps the roles they already hold expect(locator).toHaveCount(expected) failed Locator: getByRole('dialog').last().getByText(/One role per user/i) Expected: 0 Received: 1 Timeout: 30000ms 63 × locator resolved to 1 e…
morelement
full error & screenshots

SHR-039 · an employee can hold more than one role (e.g. HR Manager and Reporting Manager)

Error: both roles stay selected; the Role field shows "Reporting Manager"

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false

SHR-039 · Settings → Roles lets a user be a member of a second role

Error: adding someone to a role keeps the roles they already hold

expect(locator).toHaveCount(expected) failed

Locator:  getByRole('dialog').last().getByText(/One role per user/i)
Expected: 0
Received: 1
Timeout:  30000ms

Call log:
  - adding someone to a role keeps the roles they already hold getByRole('dialog').last().getByText(/One role per user/i) with timeout 30000ms
  - waiting for getByRole('dialog').last().getByText(/One role per user/i)
    63 × locator resolved to 1 element
       - unexpected value "1"
screenshot at failurescreenshot at failure
2 tests: 2 fail
tests
  • ✗ SHR-039 · an employee can hold more than one role (e.g. HR Manager and Reporting Manager) tests/feedback/employee-creation/positions-import-access.spec.ts:92
  • ✗ SHR-039 · Settings → Roles lets a user be a member of a second role tests/feedback/employee-creation/positions-import-access.spec.ts:103
SHR-0611. Today is the resignation date and LWD of Ishitha. Resignation raised from HR OPS SPOC account because the employee doesn't have the option to resign. Notification says conduct stay conversation within two working days. 2. No notifications triggered on any e…
morexit stakeholders logins
Employee LifecycleExitOpen — confirmed (4 of 5 checks fail)1. Exit Module to be enabled and displayed for employees 2. Configure Notice Period policy to auto-define LWD by the location/jurisdiction in the resignation window (India - 60 days; Other Countries - 14 days) 3. Customize notifications according to the length…
more of the requested last working day 4. Trigger approval and notification workflows to all stakeholders as soon as an employee resigns
an employee in India gets a 60-day notice period — instead the form says "Your 30-day notice ends 14 Nov 2026." expect(received).toBe(expected) // Object.is equality Expected: "60" Received: "30" notice periods can differ by location/jurisdiction — instead there is one company-wide "noticePeriodDays": 30 expect(received).toBeTruthy() Received: null every exit stakeholder hears of FB Test Org Lea…
morever Cacgbabf's resignation — these got nothing expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 7 - Array [] + Array [ + "HR Head", + "HR SPOC", + "IT", + "Accounts / Finance", with the last day today, the manager is not asked to hold a stay conversation within two working days expect(received).not.toMatch(expected) Expected pattern: not /within (two|2) working days|within 48 hours/i Received string: "Please hold the stay conversation within two working days — FB Test Org Leaver Cacgbabf has resigned, with Thursday 15 October as the last working day. Please hold the stay conversation within 2 working days and record it on the exit: the reasons, the knowledge-loss risk, and whether a counteroffer is worth considering. || FB Test Org Leaver Cacgbabf has resigned — FB Test Org Leaver Cacgbabf has submitted a resignation. Please hold the stay conversation within 48 hours and record it on the exit; it is worth having even when the decision looks settled. Open the exit: https://satellite-hr-frontend-final-restructure.polished-mud-fefe.workers.dev/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me/inbox"
full error & screenshots

SHR-061 · the notice period comes from the employee’s location: 60 days in India

Error: an employee in India gets a 60-day notice period — instead the form says "Your 30-day notice ends 14 Nov 2026."

expect(received).toBe(expected) // Object.is equality

Expected: "60"
Received: "30"

SHR-061 · notice periods are set per jurisdiction (India 60 days, other countries 14)

Error: notice periods can differ by location/jurisdiction — instead there is one company-wide "noticePeriodDays": 30

expect(received).toBeTruthy()

Received: null

SHR-061 · approvals and notifications reach every exit stakeholder as soon as someone resigns

Error: every exit stakeholder hears of FB Test Org Leaver Cacgbabf's resignation — these got nothing

expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 7

- Array []
+ Array [
+   "HR Head",
+   "HR SPOC",
+   "IT",
+   "Accounts / Finance",
+   "Admin",
+ ]

SHR-061 · the notification fits the requested last working day

Error: with the last day today, the manager is not asked to hold a stay conversation within two working days

expect(received).not.toMatch(expected)

Expected pattern: not /within (two|2) working days|within 48 hours/i
Received string:      "Please hold the stay conversation within two working days — FB Test Org Leaver Cacgbabf has resigned, with Thursday 15 October as the last working day. Please hold the stay conversation within 2 working days and record it on the exit: the reasons, the knowledge-loss risk, and whether a counteroffer is worth considering. || FB Test Org Leaver Cacgbabf has resigned — FB Test Org Leaver Cacgbabf has submitted a resignation. Please hold the stay conversation within 48 hours and record it on the exit; it is worth having even when the decision looks settled. Open the exit: https://satellite-hr-frontend-final-restructure.polished-mud-fefe.workers.dev/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me/inbox"
screenshot at failure
5 tests: 4 fail · 1 pass
tests
  • ✓ SHR-061 · the exit module is open to employees tests/feedback/exit/exit-forms.spec.ts:62
  • ✗ SHR-061 · the notice period comes from the employee’s location: 60 days in India tests/feedback/exit/exit-forms.spec.ts:70
  • ✗ SHR-061 · notice periods are set per jurisdiction (India 60 days, other countries 14) tests/feedback/exit/exit-forms.spec.ts:82
  • ✗ SHR-061 · approvals and notifications reach every exit stakeholder as soon as someone resigns tests/feedback/exit/resignation-journey.spec.ts:55
  • ✗ SHR-061 · the notification fits the requested last working day tests/feedback/exit/resignation-journey.spec.ts:63
SHR-063Where does the new joinee enter their details after Onboarding?Employee LifecycleOnboardingOpen — confirmedOnce a newly created employee login to their HRMS, they should be prompted to complete their Onboarding - All information collected in the Induction Form should be pulled and populated here and additional data should be collected. This data and file upload fie…
morelds flow into the HR Records(HRIS). This is currently available on HRMS.
the employee can read their own record (joining, onboarding, probation) expect(received).not.toMatch(expected) Expected pattern: not /not open to the workforce|you cannot/i Received string: "Your record Joining, onboarding, probation, every move and every manager since — the whole timeline. It is kept in the lifecycle module, which is not open to the workforce yet, so your People team can rea…
mored it and you cannot. Ask them for anything you need in the meantime."
full error & screenshots

SHR-063 · an employee can see and complete their own onboarding details

Error: the employee can read their own record (joining, onboarding, probation)

expect(received).not.toMatch(expected)

Expected pattern: not /not open to the workforce|you cannot/i
Received string:      "Your record Joining, onboarding, probation, every move and every manager since — the whole timeline. It is kept in the lifecycle module, which is not open to the workforce yet, so your People team can read it and you cannot. Ask them for anything you need in the meantime."
screenshot at failure
1 test: 1 fail
tests
  • ✗ SHR-063 · an employee can see and complete their own onboarding details tests/feedback/onboarding/orientation-and-self-service.spec.ts:54
SHR-090Probation Confirmation Form: A detailed review of each section and column is required for every employee approaching probation completion. The same form will be used by the Reporting Manager, Department Head, and HR Head to provide feedback and approvals again…
morest each evaluation criterion. This standardized review process ensures that probation performance is comprehensively assessed, documented, and approved by all relevant stakeholders before confirming the employee's employment status. The form serves as the official record for collecting feedback, recommendations, and final approval for probation confirmation.
Employee LifecycleConfirmationOpen — confirmedProbation Confirmation Questionnaire Skills Self rating Rating Comments How is the work quality(accuracy, promptness and effectiveness in completion of work assigned) Add comment How the communication Skills : Verbal /Written Add comment job knowledge Add comm…
moreent Candidates initative in learning new skills required for the current responsibilities Add comment Application of self skills as per current Job requirements Add comment Effective problem solving skills Add comment Interpersonal Skills (relations with superiors, peers and subordinates Add comment
a confirmation question set covers every criterion — the closest, "confirmation-review", lacks these expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 8 - Array [] + Array [ + "Communication skills: verbal / written", + "Job knowledge", + "Initiative in learning new skills", + "Application of skills to the current job", a question can carry the employee's s…
moreelf rating (answer types offered: Rating 1–5, Written answer, Yes / no) expect(received).toMatch(expected) Expected pattern: /self.?rating|self.?assessment/i Received string: "Rating 1–5 | Written answer | Yes / no New question set· Name the set and add the questions each review will ask.· Name 1 Rating 1–5 Required Scored a step goes to the HR Head (not "any one of" the HR partners) expect(received).toMatch(expected) Expected pattern: /HR Head/ Received string: "· Primary Manager: unresolved | · Department Head, or HR | · HR Partner · any one of 14"
full error & screenshots

SHR-090 · the probation confirmation form lists the seven evaluation criteria

Error: a confirmation question set covers every criterion — the closest, "confirmation-review", lacks these

expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 8

- Array []
+ Array [
+   "Communication skills: verbal / written",
+   "Job knowledge",
+   "Initiative in learning new skills",
+   "Application of skills to the current job",
+   "Effective problem solving",
+   "Interpersonal skills (superiors, peers, subordinates)",
+ ]

SHR-090 · each criterion takes a self rating, a rating and a comment

Error: a question can carry the employee's self rating (answer types offered: Rating 1–5, Written answer, Yes / no)

expect(received).toMatch(expected)

Expected pattern: /self.?rating|self.?assessment/i
Received string:  "Rating 1–5 | Written answer | Yes / no New question set·
Name the set and add the questions each review will ask.·
Name
1
Rating 1–5
Required
Scored
Add question
Cancel
1 question empty"
Error: a rated question can also take a comment

expect(received).toMatch(expected)

Expected pattern: /comment/i
Received string:  "Rating 1–5 | Written answer | Yes / no New question set·
Name the set and add the questions each review will ask.·
Name
1
Rating 1–5
Required
Scored
Add question
Cancel
1 question empty"

SHR-090 · the Reporting Manager, the Department Head and the HR Head each review the form

Error: a step goes to the HR Head (not "any one of" the HR partners)

expect(received).toMatch(expected)

Expected pattern: /HR Head/
Received string:  "· Primary Manager: unresolved | · Department Head, or HR | · HR Partner · any one of 14"
screenshot at failurescreenshot at failure
3 tests: 3 fail
tests
  • ✗ SHR-090 · the probation confirmation form lists the seven evaluation criteria tests/feedback/confirmation/probation-form.spec.ts:21
  • ✗ SHR-090 · each criterion takes a self rating, a rating and a comment tests/feedback/confirmation/probation-form.spec.ts:32
  • ✗ SHR-090 · the Reporting Manager, the Department Head and the HR Head each review the form tests/feedback/confirmation/probation-form.spec.ts:50
SHR-096Unable to initiate the exit process from any login. Additionally, the system is currently displaying the "Last Working Day (LWD)" field upfront. Ideally, the process should capture the employee's resignation date and automatically calculate the relieving date …
morebased on the applicable notice period. If there is a need to modify the auto-calculated relieving date, the system should provide an option to update it along with a mandatory reason for the change and an appropriate approval workflow. Also, the terminology should be updated from "Last Working Day (LWD)" to "Relieving Date" throughout the process for consistency and better user experience.
Employee LifecycleOffboardingOpen — confirmedchanging the calculated relieving date asks for a reason for the change; HR can start an exit for any employee; the exit form takes the resignation date and works out the relieving date; the forms say “Relieving date”, not “Last working day”
moving the date adds a mandatory "reason for the change" field (the form only has: Last working day* | Reason*) expect(received).toBeGreaterThan(expected) Expected: > 1 Received: 1 every active employee can be picked (36 offered of 72 active; the picker loads only the first 50 employees) — these can't expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 38 - Array …
more[] + Array [ + "Pramod Singh", + "Preboarding Flowtest", + "Priyasha Nair", + "Probe Candidate", the form asks for the resignation date expect(received).toMatch(expected) Expected pattern: /Resignation date/i Received string: "Employee | Last working day | Initiation" HR Start exit says "Relieving date" expect(received).not.toMatch(expected) Expected pattern: not /Last working day/i Received string: "Start an exit Opens the exit-approval flow, the clearance lanes, and a knowledge-transfer plan. Payroll lock defaults to five days before the last day. Employee Pick an employee Last working day Pick the last day Initiation
full error & screenshots

SHR-096 · changing the calculated relieving date asks for a reason for the change

Error: moving the date adds a mandatory "reason for the change" field (the form only has: Last working day* | Reason*)

expect(received).toBeGreaterThan(expected)

Expected: > 1
Received:   1

SHR-096 · HR can start an exit for any employee

Error: every active employee can be picked (36 offered of 72 active; the picker loads only the first 50 employees) — these can't

expect(received).toEqual(expected) // deep equality

- Expected  -  1
+ Received  + 38

- Array []
+ Array [
+   "Pramod Singh",
+   "Preboarding Flowtest",
+   "Priyasha Nair",
+   "Probe Candidate",
+   "QA Accounts",
+   "QA Admin",
+   "QA Buddy",
+   "QA Department Head",
+   "QA DevOps",
+   "QA Employee One",
+   "QA Employee Two",
+   "QA HR Head",
+   "QA HR Manager",
+   "QA HR SPOC",
+   "QA IT",
+   "QA JSM",
+   "QA Manager",
+   "Raju Rastogi",
+   "Ritika Bhatia",
+   "Ritika Chourasia",
+   "Rohan Gendercheck",
+   "Rohan Patwardhan",
+   "Role Test",
+   "Sameer Khan",
+   "Siya",
+   "Sneha Vaidyanathan",
+   "Tarun Abraham",
+   "Test Department Head",
+   "Test Hiring Manager",
+   "Test HR Head",
+   "Test Interviewer One",

SHR-096 · the exit form takes the resignation date and works out the relieving date

Error: the form asks for the resignation date

expect(received).toMatch(expected)

Expected pattern: /Resignation date/i
Received string:  "Employee | Last working day | Initiation"

SHR-096 · the forms say “Relieving date”, not “Last working day”

Error: HR Start exit says "Relieving date"

expect(received).not.toMatch(expected)

Expected pattern: not /Last working day/i
Received string:      "Start an exit

Opens the exit-approval flow, the clearance lanes, and a knowledge-transfer plan. Payroll lock defaults to five days before the last day.

Employee
Pick an employee
Last working day
Pick the last day
Initiation
Resignation
Cancel
Start exit"
Error: the employee Resign form says "Relieving date"

expect(received).not.toMatch(expected)

Expected pattern: not /Last working day/i
Received string:      "Resign

This starts your exit. Your approvers are notified as soon as you submit.

Last working day*
14 Nov 2026

Your 30-day notice ends 14 Nov 2026.

Reason*

Seen by your approvers.

Cancel
Submit resignation"
screenshot at failurescreenshot at failurescreenshot at failurescreenshot at failurescreenshot at failure
4 tests: 4 fail
tests
  • ✗ SHR-096 · changing the calculated relieving date asks for a reason for the change tests/feedback/exit/exit-forms.spec.ts:89
  • ✗ SHR-096 · HR can start an exit for any employee tests/feedback/exit/exit-forms.spec.ts:104
  • ✗ SHR-096 · the exit form takes the resignation date and works out the relieving date tests/feedback/exit/exit-forms.spec.ts:119
  • ✗ SHR-096 · the forms say “Relieving date”, not “Last working day” tests/feedback/exit/exit-forms.spec.ts:129
SHR-105Phone Number Extension dropdown only has India and USEmployee LifecycleEmployee CreationOpen — confirmedAdd phone number extensions for other loactions and states as well
country codes offered: IN +91, US +1 expect(received).toBeGreaterThan(expected) Expected: > 2 Received: 2
full error & screenshots

SHR-105 · the phone country code list covers more than India and the US

Error: country codes offered: IN +91, US +1

expect(received).toBeGreaterThan(expected)

Expected: > 2
Received:   2
screenshot at failure
1 test: 1 fail
tests
  • ✗ SHR-105 · the phone country code list covers more than India and the US tests/feedback/employee-creation/new-employee-form.spec.ts:138
SHR-107Employee phone number in US Extension and Emergency Contact is in India ExtensionEmployee LifecycleEmployee CreationOpen — confirmedIf employee's phone number is added with US Phone Extension, their emerhency contact should have the same Phone Extension.
a US employee phone with an Indian (+91) emergency phone is refused — instead the form sent it and the server accepted every field (it only refused the employee number the test swapped in, so nothing was saved) expect(received).toBe(expected) // Object.is equality Expected: true Received: false
full error & screenshots

SHR-107 · with a US phone number the emergency contact must use the same country code

Error: a US employee phone with an Indian (+91) emergency phone is refused — instead the form sent it and the server accepted every field (it only refused the employee number the test swapped in, so nothing was saved)

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false
screenshot at failure
1 test: 1 fail
tests
  • ✗ SHR-107 · with a US phone number the emergency contact must use the same country code tests/feedback/employee-creation/new-employee-form.spec.ts:161
SHR-108California is in jurisdictions but a corresponding option doesn't exist in locations.Employee LifecycleEmployee CreationOpen — confirmedJurisdiction should have a restricted location list within that geography
with California picked, Location offers only California's locations (Los Angeles); it offers Ahmedabad - Remote, Demo – Bengaluru Office, Hyderabad HQ, Los Angeles, Remote - India expect(received).toEqual(expected) // deep equality - Expected - 0 + Received + 4 Array [ + "Ahmedabad - Remote", + "Demo – Bengaluru Office", + "Hyderabad HQ", "Los Angeles", + "Remote - India", jurisdi…
morections on the New employee form with no location to pick expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "Tamil Nadu", + ]
full error & screenshots

SHR-108 · after picking a jurisdiction, Location offers only locations in that jurisdiction

Error: with California picked, Location offers only California's locations (Los Angeles); it offers Ahmedabad - Remote, Demo – Bengaluru Office, Hyderabad HQ, Los Angeles, Remote - India

expect(received).toEqual(expected) // deep equality

- Expected  - 0
+ Received  + 4

  Array [
+   "Ahmedabad - Remote",
+   "Demo – Bengaluru Office",
+   "Hyderabad HQ",
    "Los Angeles",
+   "Remote - India",
  ]

SHR-108 · every jurisdiction offered for employees has at least one location in it

Error: jurisdictions on the New employee form with no location to pick

expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 3

- Array []
+ Array [
+   "Tamil Nadu",
+ ]
screenshot at failure
2 tests: 2 fail
tests
  • ✗ SHR-108 · after picking a jurisdiction, Location offers only locations in that jurisdiction tests/feedback/employee-creation/new-employee-form.spec.ts:83
  • ✗ SHR-108 · every jurisdiction offered for employees has at least one location in it tests/feedback/employee-creation/new-employee-form.spec.ts:94
SHR-010Pending approvals currently show only the employee name or generic text. it does not clearly specify what someone is approving or rejecting. Recommend having a short description that empowers the decision-maker to make a quick decision without having to go to …
moreanother screen
General / OtherHome page> pending approvalsOpen — confirmedHome “Pending approvals” says what is being approved, not just who asked
Home card for "Missed punch · 8 Oct" reads: "Pending approvals / View all / QO / QA Employee One / QA Employee One / FA / Fbtest Candidate ageaah / FB Test Pipeline 1015064007 · offer OFR-2026-0083 / FA / Fbtest Candidate afdbff / FB Test Pipeline 1015053155 · offer OFR-2026-0082 / FA / Fbtest Candidate adejaj / FB Test Pipeline 1015034909 · offer OFR-2026-0081" — it names the requester only, not …
morethe request expect(received).toContain(expected) // indexOf Expected substring: "Missed punch" Received string: "Pending approvals / View all / QO / QA Employee One / QA Employee One / FA / Fbtest Candidate ageaah / FB Test Pipeline 1015064007 · offer OFR-2026-0083 / FA / Fbtest Candidate afdbff / FB Test Pipeline 1015053155 · offer OFR-2026-0082 / FA / Fbtest Candidate adejaj / FB Test Pipeline 1015034909 · offer OFR-2026-0081"
full error & screenshots

SHR-010 · Home “Pending approvals” says what is being approved, not just who asked

Error: Home card for "Missed punch · 8 Oct" reads: "Pending approvals / View all / QO / QA Employee One / QA Employee One / FA / Fbtest Candidate ageaah / FB Test Pipeline 1015064007 · offer OFR-2026-0083 / FA / Fbtest Candidate afdbff / FB Test Pipeline 1015053155 · offer OFR-2026-0082 / FA / Fbtest Candidate adejaj / FB Test Pipeline 1015034909 · offer OFR-2026-0081" — it names the requester only, not the request

expect(received).toContain(expected) // indexOf

Expected substring: "Missed punch"
Received string:    "Pending approvals / View all / QO / QA Employee One / QA Employee One / FA / Fbtest Candidate ageaah / FB Test Pipeline 1015064007 · offer OFR-2026-0083 / FA / Fbtest Candidate afdbff / FB Test Pipeline 1015053155 · offer OFR-2026-0082 / FA / Fbtest Candidate adejaj / FB Test Pipeline 1015034909 · offer OFR-2026-0081"
screenshot at failure
1 test: 1 fail
tests
  • ✗ SHR-010 · Home “Pending approvals” says what is being approved, not just who asked tests/feedback/general/general.spec.ts:26
SHR-016Issue: After submitting the leave request, the system only shows “Request sent” and mentions the approval flow as Manager approval → Department Head approval. However, it does not clearly show who the request has been sent to, whose approval is currently pendi…
moreng, or where the employee can check the approval status/progress. -Checked from Ishita.bhattacharya@opsmaven.test
LeaveLeaveOpen — confirmed (1 of 2 checks fail)Expected Result: The system should clearly display the current approver, pending approval stage, and provide a clear place/link to track the request and approval status.
the confirmation names who has the request now expect(received).toMatch(expected) Expected pattern: /QA Manager/ Received string: "Request sent 🎉· 1 day of floating holidays, 20 Jan. Watch “My leave” for the decision.· Apply for another" Error: the confirmation shows the pending stage expect(received).toMatch(expected) Expected pattern: /Manager approval|with your manager|Awaiting/i Received str…
moreing: "Request sent 🎉·
full error & screenshots

SHR-016 · after sending, the screen names the current approver and links to where the request is tracked

Error: the confirmation names who has the request now

expect(received).toMatch(expected)

Expected pattern: /QA Manager/
Received string:  "Request sent 🎉·
1 day of floating holidays, 20 Jan. Watch “My leave” for the decision.·
Apply for another"
Error: the confirmation shows the pending stage

expect(received).toMatch(expected)

Expected pattern: /Manager approval|with your manager|Awaiting/i
Received string:  "Request sent 🎉·
1 day of floating holidays, 20 Jan. Watch “My leave” for the decision.·
Apply for another"
Error: a link or button to track the request (the panel reads: "Request sent 🎉 1 day of floating holidays, 20 Jan. Watch “My leave” for the decision. Apply for another")

expect(received).toBeGreaterThan(expected)

Expected: > 0
Received:   0
screenshot at failure
2 tests: 1 fail · 1 pass
tests
  • ✗ SHR-016 · after sending, the screen names the current approver and links to where the request is tracked tests/feedback/leave/leave-journeys.spec.ts:28
  • ✓ SHR-016 · My leave shows the current approver and the pending stage of a request tests/feedback/leave/leave-journeys.spec.ts:52
SHR-018Leave types should be displayed correctly. Kavya is a female, and hence paternity leave should not be displayed for herLeaveLeave BalanceOpen — confirmed (1 of 2 checks fail)a female employee is not offered Paternity Leave; no female employee holds a Paternity Leave balance
female employees holding paternity leave (e.g. Kavya Raghunathan) expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 4 - Array [] + Array [ + "Kavya Raghunathan: Paternity 5 days", + "Test Interviewer One: Paternity 5 days", + ]
full error

SHR-018 · no female employee holds a Paternity Leave balance

Error: female employees holding paternity leave (e.g. Kavya Raghunathan)

expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 4

- Array []
+ Array [
+   "Kavya Raghunathan: Paternity 5 days",
+   "Test Interviewer One: Paternity 5 days",
+ ]
2 tests: 1 fail · 1 pass
tests
  • ✓ SHR-018 · a female employee is not offered Paternity Leave tests/feedback/leave/leave-rules.spec.ts:139
  • ✗ SHR-018 · no female employee holds a Paternity Leave balance tests/feedback/leave/leave-rules.spec.ts:145
SHR-019An employee cannot have more than 10 days of bereavement leave and they cannot have more than 7 days of wedding leave. These leaves don't get carried forward. and should expire in specific number of days. For Kavya I can see 20 beraevement leaves and 14 weddin…
moreg leaves
LeaveLeave BalanceOpen — confirmed (2 of 3 checks fail)nobody holds more than 10 days of Bereavement or 7 days of Wedding leave; bereavement and wedding leave are not carried forward and expire; Wedding Leave is capped at 7 days
BLE: carry-forward limit is 0 (rule is {}) expect(received).toBe(expected) // Object.is equality Expected: 0 Received: undefined Error: BLE: an expiry period is set (rule is {}) expect(received).toBeTruthy() Received: undefined Error: WEDDING-LEAVE: carry-forward limit is 0 (rule is {}) expect(received).toBe(expected) // Object.is equality Expected: 0 days per request (rule {"allowHalfDay":true,"…
moreminNoticeDays":30,"permanentOnly":true,"afterProbation":true,"maxDaysPerYear":7,"oncePerService":true,"minTenureMonths":12,"countCalendarDays":false,"maxConsecutiveDays":10,"noticeExemptWhenEmergency":false}) expect(received).toBeLessThanOrEqual(expected) Expected: <= 7 Received: 10
full error

SHR-019 · bereavement and wedding leave are not carried forward and expire

Error: BLE: carry-forward limit is 0 (rule is {})

expect(received).toBe(expected) // Object.is equality

Expected: 0
Received: undefined
Error: BLE: an expiry period is set (rule is {})

expect(received).toBeTruthy()

Received: undefined
Error: WEDDING-LEAVE: carry-forward limit is 0 (rule is {})

expect(received).toBe(expected) // Object.is equality

Expected: 0
Received: undefined
Error: WEDDING-LEAVE: an expiry period is set (rule is {})

expect(received).toBeTruthy()

Received: undefined

SHR-019 · Wedding Leave is capped at 7 days

Error: days per request (rule {"allowHalfDay":true,"minNoticeDays":30,"permanentOnly":true,"afterProbation":true,"maxDaysPerYear":7,"oncePerService":true,"minTenureMonths":12,"countCalendarDays":false,"maxConsecutiveDays":10,"noticeExemptWhenEmergency":false})

expect(received).toBeLessThanOrEqual(expected)

Expected: <= 7
Received:    10
3 tests: 2 fail · 1 pass
tests
  • ✓ SHR-019 · nobody holds more than 10 days of Bereavement or 7 days of Wedding leave tests/feedback/leave/leave-rules.spec.ts:227
  • ✗ SHR-019 · bereavement and wedding leave are not carried forward and expire tests/feedback/leave/leave-rules.spec.ts:236
  • ✗ SHR-019 · Wedding Leave is capped at 7 days tests/feedback/leave/leave-rules.spec.ts:250
SHR-020I tried applying for bereavement leave from 1st to 21st oct as balance said 20 days however it showed an error stating "No working days in that range — check the dates"LeaveApply LeaveOpen — confirmed (1 of 4 checks fail)Expected Result: Ideally it should not allow applying bereavement leaves for more than 10 days. any leave request that is for 3 days or more should trigger a two level approval [ level 1 is the reporting manager and level 2 is the department head]
a message naming the 10-day limit expect(locator).toBeVisible() failed Locator: locator('#main-content').getByText(/10 days|more than 10|at most 10|maximum/i) Expected: visible Timeout: 10000ms Error: element(s) not found
full error & screenshots

SHR-020 · the form refuses Bereavement Leave of more than 10 days

Error: a message naming the 10-day limit

expect(locator).toBeVisible() failed

Locator: locator('#main-content').getByText(/10 days|more than 10|at most 10|maximum/i)
Expected: visible
Timeout: 10000ms
Error: element(s) not found

Call log:
  - a message naming the 10-day limit locator('#main-content').getByText(/10 days|more than 10|at most 10|maximum/i) with timeout 10000ms
  - waiting for locator('#main-content').getByText(/10 days|more than 10|at most 10|maximum/i)
screenshot at failure
4 tests: 1 fail · 3 pass
tests
  • ✓ SHR-020 · a request of 3 days or more needs the manager and then the department head tests/feedback/leave/leave-journeys.spec.ts:91
  • ✗ SHR-020 · the form refuses Bereavement Leave of more than 10 days tests/feedback/leave/leave-journeys.spec.ts:133
  • ✓ SHR-020 · the server refuses Bereavement Leave of more than 10 days tests/feedback/leave/leave-journeys.spec.ts:144
  • ✓ SHR-020 · Bereavement Leave is capped at 10 days per request (policy) tests/feedback/leave/leave-rules.spec.ts:245
SHR-068Leave cancellation requests auto approved and not being triggered to reporting manager for approvalLeaveAttendanceOpen — confirmedLeave cancellation request s auto approved and not being triggered to reporting manager for approval
the cancellation of approved leave (run 076ac041-50d1-4335-a32e-2877a0d99e0a) expect(received).toBe(expected) // Object.is equality Expected: "manager task" Received: "leave cancelled and the day credited back without the manager (cancellation request shows \"approved\")"
full error & screenshots

SHR-068 · cancelling approved leave goes to the reporting manager instead of being approved automatically

Error: the cancellation of approved leave (run 076ac041-50d1-4335-a32e-2877a0d99e0a)

expect(received).toBe(expected) // Object.is equality

Expected: "manager task"
Received: "leave cancelled and the day credited back without the manager (cancellation request shows \"approved\")"
screenshot at failure
1 test: 1 fail
tests
  • ✗ SHR-068 · cancelling approved leave goes to the reporting manager instead of being approved automatically tests/feedback/leave/leave-journeys.spec.ts:215
SHR-085FH should be credited after 30 days from the DOJ. PTO Should be credited after 1st of next month from joining. Marriage leave is a special leave it should be assigned by the HR.Leaveleave depositOpen — confirmed (2 of 3 checks fail)Floating Holidays are credited only 30 days after the joining date; PTO is first credited on the 1st of the month after joining; Wedding Leave is assigned by HR only, never accrued automatically
QA Employee Two joined 2026-10-01: Floating Holiday credits before 2026-10-31 expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "2026-10-09 +2.00 policy_entitlement:2026", + ] QA Employee Two joined 2026-10-01: PTO credits before 2026-11-01 or for the joining month expect(received).toEqual(expected) // deep equality - Expected - 1 + Rece…
moreived + 3 - Array [] + Array [ + "2026-10-09 +1.25 policy_entitlement:2026-10", + ]
full error

SHR-085 · Floating Holidays are credited only 30 days after the joining date

Error: QA Employee Two joined 2026-10-01: Floating Holiday credits before 2026-10-31

expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 3

- Array []
+ Array [
+   "2026-10-09 +2.00 policy_entitlement:2026",
+ ]

SHR-085 · PTO is first credited on the 1st of the month after joining

Error: QA Employee Two joined 2026-10-01: PTO credits before 2026-11-01 or for the joining month

expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 3

- Array []
+ Array [
+   "2026-10-09 +1.25 policy_entitlement:2026-10",
+ ]
3 tests: 2 fail · 1 pass
tests
  • ✗ SHR-085 · Floating Holidays are credited only 30 days after the joining date tests/feedback/leave/leave-rules.spec.ts:287
  • ✗ SHR-085 · PTO is first credited on the 1st of the month after joining tests/feedback/leave/leave-rules.spec.ts:295
  • ✓ SHR-085 · Wedding Leave is assigned by HR only, never accrued automatically tests/feedback/leave/leave-rules.spec.ts:305
SHR-086There is no option to request for Comp offLeaverequest for Comp offOpen — confirmed (1 of 2 checks fail)a comp-off request for a weekend day worked reaches the manager instead of being rejected at once; an employee can request comp-off for a day worked
comp-off for Saturday 2026-10-10 expect(received).toBe(expected) // Object.is equality Expected: "manager task" Received: "the request ended \"rejected\" without anyone deciding"
full error

SHR-086 · a comp-off request for a weekend day worked reaches the manager instead of being rejected at once

Error: comp-off for Saturday 2026-10-10

expect(received).toBe(expected) // Object.is equality

Expected: "manager task"
Received: "the request ended \"rejected\" without anyone deciding"
2 tests: 1 fail · 1 pass
tests
  • ✗ SHR-086 · a comp-off request for a weekend day worked reaches the manager instead of being rejected at once tests/feedback/leave/leave-journeys.spec.ts:289
  • ✓ SHR-086 · an employee can request comp-off for a day worked tests/feedback/leave/leave-rules.spec.ts:182
SHR-087Leave application for more than 3 days are not triggered to the department head after the manager approved, It is directly triggered to HR with out dept head approval.LeaveLong leave approval matrixOpen — confirmed (2 of 4 checks fail)PTO of more than 3 days goes to the department head after the manager approves; leave without pay of more than 3 days goes to the department head after the manager, not straight to HR; leave of more than 3 days goes to the department head after the manager (An…
morenual Leave Approval); leave without pay of more than 3 days also needs the department head
after the manager the run went to hr_approval (14 HR tasks) expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 1 Array [ - "dept_head_approval", + "hr_approval", ] Leave Without Pay chain is mgr_approval (manager_or_hr_partner) → hr_approval (hr_partner) expect(received).toBe(expected) // Object.is equality Expected: true Received: false
full error

SHR-087 · leave without pay of more than 3 days goes to the department head after the manager, not straight to HR

Error: after the manager the run went to hr_approval (14 HR tasks)

expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 1

  Array [
-   "dept_head_approval",
+   "hr_approval",
  ]

SHR-087 · leave without pay of more than 3 days also needs the department head

Error: Leave Without Pay chain is mgr_approval (manager_or_hr_partner) → hr_approval (hr_partner)

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false
4 tests: 2 fail · 2 pass
tests
  • ✓ SHR-087 · PTO of more than 3 days goes to the department head after the manager approves tests/feedback/leave/leave-journeys.spec.ts:75
  • ✗ SHR-087 · leave without pay of more than 3 days goes to the department head after the manager, not straight to HR tests/feedback/leave/leave-journeys.spec.ts:106
  • ✓ SHR-087 · leave of more than 3 days goes to the department head after the manager (Annual Leave Approval) tests/feedback/leave/leave-rules.spec.ts:314
  • ✗ SHR-087 · leave without pay of more than 3 days also needs the department head tests/feedback/leave/leave-rules.spec.ts:322
SHR-091Leave Application Restriction: Employees should be allowed to apply for leave only up to 90 days in advance from the current date for all leave types. This restriction shall not apply to Maternity Leave and Bereavement Leave, which may be applied for beyond th…
moree 60-day limit.
LeaveLeave configurationOpen — confirmed (2 of 3 checks fail)PTO more than 90 days ahead is refused; Bereavement Leave more than 90 days ahead is still accepted (exempt); the form refuses leave dates more than 90 days ahead (PTO)
PTO on 2027-01-28 (more than 90 days ahead): server answered 201 {"id":"b9609f2c-55bb-457e-998a-9a8338be0a9c","workflowInstanceId":"4abc1e0a-e419-4b5b-9f81-8d8641ad481c","units":0.5,"breakdown":{"units":0.5,"calendarDays":1," expect(received).toBeGreaterThanOrEqual(expected) Expected: >= 400 Received: 201 PTO on 2027-01-25 (100+ days ahead) should be blocked with a 90-day message; the form off…
moreers "Send request" expect(received).toMatchObject(expected) - Expected - 1 + Received + 1 Object { - "sendEnabled": false, + "sendEnabled": true, }
full error & screenshots

SHR-091 · PTO more than 90 days ahead is refused

Error: PTO on 2027-01-28 (more than 90 days ahead): server answered 201 {"id":"b9609f2c-55bb-457e-998a-9a8338be0a9c","workflowInstanceId":"4abc1e0a-e419-4b5b-9f81-8d8641ad481c","units":0.5,"breakdown":{"units":0.5,"calendarDays":1,"

expect(received).toBeGreaterThanOrEqual(expected)

Expected: >= 400
Received:    201

SHR-091 · the form refuses leave dates more than 90 days ahead (PTO)

Error: PTO on 2027-01-25 (100+ days ahead) should be blocked with a 90-day message; the form offers "Send request"

expect(received).toMatchObject(expected)

- Expected  - 1
+ Received  + 1

  Object {
-   "sendEnabled": false,
+   "sendEnabled": true,
  }
screenshot at failure
3 tests: 2 fail · 1 pass
tests
  • ✗ SHR-091 · PTO more than 90 days ahead is refused tests/feedback/leave/leave-journeys.spec.ts:254
  • ✓ SHR-091 · Bereavement Leave more than 90 days ahead is still accepted (exempt) tests/feedback/leave/leave-journeys.spec.ts:263
  • ✗ SHR-091 · the form refuses leave dates more than 90 days ahead (PTO) tests/feedback/leave/leave-rules.spec.ts:115
SHR-092Compensatory Off (Comp-Off) Eligibility: Comp-Off requests may be raised only for work performed on declared weekends or company holidays. Comp-Off cannot be applied for regular scheduled working days. All Comp-Off requests must be apporved by Reporting manage…
morer ->Department Head -> HR SPOC -> HR Head
LeaveLeave configurationOpen — confirmedcomp-off for a regular working day is refused; comp-off requests go Reporting manager → Department head → HR SPOC → HR head
comp-off for 2026-10-13 (a working day) was accepted: {"id":"e56451c6-4a92-4ceb-9dc8-e1e718975797","workflowInstanceId":"95cabf4c-44ef-4d4c-86fc-f7474c0ba36e","units":1,"breakdown":null,"lop":null,"policy":{"id":"e expect(received).toBeGreaterThanOrEqual(expected) Expected: >= 400 Received: 201 Comp-Off Request chain is mgr_compoff (manager_or_hr_partner) expect(received).toHaveLength(expected…
more) Expected length: 4 Received length: 1 Received array: ["mgr_compoff (manager_or_hr_partner)"]
full error

SHR-092 · comp-off for a regular working day is refused

Error: comp-off for 2026-10-13 (a working day) was accepted: {"id":"e56451c6-4a92-4ceb-9dc8-e1e718975797","workflowInstanceId":"95cabf4c-44ef-4d4c-86fc-f7474c0ba36e","units":1,"breakdown":null,"lop":null,"policy":{"id":"e

expect(received).toBeGreaterThanOrEqual(expected)

Expected: >= 400
Received:    201

SHR-092 · comp-off requests go Reporting manager → Department head → HR SPOC → HR head

Error: Comp-Off Request chain is mgr_compoff (manager_or_hr_partner)

expect(received).toHaveLength(expected)

Expected length: 4
Received length: 1
Received array:  ["mgr_compoff (manager_or_hr_partner)"]
2 tests: 2 fail
tests
  • ✗ SHR-092 · comp-off for a regular working day is refused tests/feedback/leave/leave-journeys.spec.ts:274
  • ✗ SHR-092 · comp-off requests go Reporting manager → Department head → HR SPOC → HR head tests/feedback/leave/leave-rules.spec.ts:328
SHR-093Leave application for half day is not allowing us to specify First Half or Second Half for the day selected ; Please add the column to capture First Half or Second HalfLeaveLeave configurationOpen — confirmeda second-half leave is recorded as the second half; a half-day request lets the employee choose First half or Second half; the "Just a half day" switch turns on and the request becomes half a day
the half the employee asked for expect(received).toBe(expected) // Object.is equality Expected: "second_half" Received: "first_half" a First half / Second half choice on the form (only a "Just a half day" switch exists) expect(received).toBeGreaterThan(expected) Expected: > 0 Received: 0 the switch stays on after it is clicked expect(locator).toHaveAttribute(expected) failed Locator: locator(…
more'#main-content').getByRole('switch') Expected: "true" Received: "false" Timeout: 10000ms 24 × locator resolved to <button value="on" type="button" role="switch" aria-checked="false" aria-label="Half day" data-state="unchecked" class="inline-flex shrink-0 items-center rounded-full border border-transparent transition-colors bg-surface-3 data-[state=checked]:bg-brand aria-checked:bg-brand disabled:cursor-not-allowed disabled:opacity-50 h-5 w-9">…</button>
full error & screenshots

SHR-093 · a second-half leave is recorded as the second half

Error: the half the employee asked for

expect(received).toBe(expected) // Object.is equality

Expected: "second_half"
Received: "first_half"

SHR-093 · a half-day request lets the employee choose First half or Second half

Error: a First half / Second half choice on the form (only a "Just a half day" switch exists)

expect(received).toBeGreaterThan(expected)

Expected: > 0
Received:   0

SHR-093 · the "Just a half day" switch turns on and the request becomes half a day

Error: the switch stays on after it is clicked

expect(locator).toHaveAttribute(expected) failed

Locator:  locator('#main-content').getByRole('switch')
Expected: "true"
Received: "false"
Timeout:  10000ms

Call log:
  - the switch stays on after it is clicked locator('#main-content').getByRole('switch') with timeout 10000ms
  - waiting for locator('#main-content').getByRole('switch')
    24 × locator resolved to <button value="on" type="button" role="switch" aria-checked="false" aria-label="Half day" data-state="unchecked" class="inline-flex shrink-0 items-center rounded-full border border-transparent transition-colors bg-surface-3 data-[state=checked]:bg-brand aria-checked:bg-brand disabled:cursor-not-allowed disabled:opacity-50 h-5 w-9">…</button>
       - unexpected value "false"
screenshot at failurescreenshot at failure
3 tests: 3 fail
tests
  • ✗ SHR-093 · a second-half leave is recorded as the second half tests/feedback/leave/leave-journeys.spec.ts:310
  • ✗ SHR-093 · a half-day request lets the employee choose First half or Second half tests/feedback/leave/leave-rules.spec.ts:94
  • ✗ SHR-093 · the "Just a half day" switch turns on and the request becomes half a day tests/feedback/leave/leave-rules.spec.ts:103
SHR-094Issue: Attendance correction/regularization entries are currently not displayed with a color code, whereas color coding is available for all other attendance-related changes and statuses. Expected Behavior: Attendance correction/regularization requests should …
morealso be highlighted using appropriate color codes, similar to other attendance transactions. This will ensure consistency in the attendance view and help users easily identify and distinguish regularized attendance records from other attendance changes.
LeaveLeaveOpen — confirmeda corrected (regularised) day is colour-coded and labelled as corrected
the calendar legend has a colour for corrected / regularised days (it lists Present, WFH, Half day, Absent, Leave, Holiday, No record only) expect(received).toMatch(expected) Expected pattern: /regulari[sz]ed|corrected/i Received string: "My attendance· Your month at a glance — corrections take a minute if something looks off.· Request a correction Leave Attendance Overtime & comp-off· Thursday 1…
more5 October·
full error & screenshots

SHR-094 · a corrected (regularised) day is colour-coded and labelled as corrected

Error: the calendar legend has a colour for corrected / regularised days (it lists Present, WFH, Half day, Absent, Leave, Holiday, No record only)

expect(received).toMatch(expected)

Expected pattern: /regulari[sz]ed|corrected/i
Received string:  "My attendance·
Your month at a glance — corrections take a minute if something looks off.·
Request a correction
Leave
Attendance
Overtime & comp-off·
Thursday 15 October·
Clocked out at 7:13 AM·
Clock in again·
0:04:07·
8h 25m to a full 8.5h day·
12 AM
General Shift 10:00 AM – 7:00 PM
8 PM
12:35 AM – 12:35 AM · 0m
12:36 AM – 12:37 AM · 0m
12:40 AM – 12:41 AM · 1m
1:41 AM – 1:41 AM · 0m
1:41 AM – 1:41 AM · 0m
1:41 AM – 1:41 AM · 0m
1:50 AM – 1:50 AM · 0m
1:51 AM – 1:51 AM · 0m
1:53 AM – 1:53 AM · 0m
1:53 AM – 1:53 AM · 0m
1:53 AM – 1:53 AM · 0m
3:04 AM – 3:04 AM · 0m
3:04 AM – 3:04 AM · 0m
3:04 AM – 3:04 AM · 0m
5:04 AM – 5:04 AM · 0m
5:04 AM – 5:04 AM · 0m
5:04 AM – 5:04 AM · 0m
6:09 AM – 6:09 AM · 0m
6:09 AM – 6:09 AM · 0m
6:09 AM – 6:10 AM · 0m
7:12 AM – 7:12 AM · 0m
screenshot at failure
1 test: 1 fail
tests
  • ✗ SHR-094 · a corrected (regularised) day is colour-coded and labelled as corrected tests/feedback/attendance/attendance-pr.spec.ts:106
SHR-122Any special leave type like bereavement leave, examination leave, wedding leave, maternity, paternity leave, etc should not be displayed to the employee unless HR credits those leaves to them based on the request via a ticket. the leaves that employees usually…
more see are PTOs & Floating Holidays and Service Leaves (if eligible)
LeaveLeave DisplayOpen — confirmed (1 of 2 checks fail)special leave types with no credited balance are hidden from the employee; a special leave HR has credited is offered to the employee
special leave types offered with 0 balance (should appear only once HR credits them) expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 6 - Array [] + Array [ + "Bereavement Leave", + "Examination Leave", + "Paternity Leave", + "Wedding Leave",
full error & screenshots

SHR-122 · special leave types with no credited balance are hidden from the employee

Error: special leave types offered with 0 balance (should appear only once HR credits them)

expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 6

- Array []
+ Array [
+   "Bereavement Leave",
+   "Examination Leave",
+   "Paternity Leave",
+   "Wedding Leave",
+ ]
screenshot at failure
2 tests: 1 fail · 1 pass
tests
  • ✗ SHR-122 · special leave types with no credited balance are hidden from the employee tests/feedback/leave/leave-rules.spec.ts:152
  • ✓ SHR-122 · a special leave HR has credited is offered to the employee tests/feedback/leave/leave-rules.spec.ts:160
SHR-046Maternity leave calculation is excluding holidays currently however only for this particular leave type calculation should be 182 days from the date of leaveLeave and Attendanceleave calculationOpen — confirmed (2 of 4 checks fail)Restrcit Maternity Leave by gender. Auto-calculate it to 182 continuious days and not 182 business days - and this paid leave includes weekends. Do not exclude counting holidays and weekends.
male employees holding maternity leave expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 4 - Array [] + Array [ + "Aarav Krishnamurthy.: Maternity 182 days", + "Test Interviewer Two: Maternity 182 days", + ] To date auto-filled as 2027-06-20 (the form leaves "Pick a date") expect(locator).toBeVisible() failed Locator: locator('#main-content').getByText(/^20 \w{…
more3} 2027$/) Expected: visible Timeout: 10000ms Error: element(s) not found
full error & screenshots

SHR-046 · no male employee holds a Maternity Leave balance

Error: male employees holding maternity leave

expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 4

- Array []
+ Array [
+   "Aarav Krishnamurthy.: Maternity 182 days",
+   "Test Interviewer Two: Maternity 182 days",
+ ]

SHR-046 · picking Maternity Leave and a start date fills the end date 182 days later

Error: To date auto-filled as 2027-06-20 (the form leaves "Pick a date")

expect(locator).toBeVisible() failed

Locator: locator('#main-content').getByText(/^20 \w{3} 2027$/)
Expected: visible
Timeout: 10000ms
Error: element(s) not found

Call log:
  - To date auto-filled as 2027-06-20 (the form leaves "Pick a date") locator('#main-content').getByText(/^20 \w{3} 2027$/) with timeout 10000ms
  - waiting for locator('#main-content').getByText(/^20 \w{3} 2027$/)
screenshot at failure
4 tests: 2 fail · 2 pass
tests
  • ✓ SHR-046 · a male employee is not offered Maternity Leave tests/feedback/leave/leave-rules.spec.ts:169
  • ✗ SHR-046 · no male employee holds a Maternity Leave balance tests/feedback/leave/leave-rules.spec.ts:175
  • ✓ SHR-046 · maternity leave is counted as 182 continuous calendar days, weekends and holidays included tests/feedback/leave/leave-rules.spec.ts:197
  • ✗ SHR-046 · picking Maternity Leave and a start date fills the end date 182 days later tests/feedback/leave/leave-rules.spec.ts:207
SHR-047Mat leave configuration and approval workflow is pendingLeave and Attendanceleave calculationOpen — confirmed (2 of 3 checks fail)No notification triggered for Approvers. - Once employee applies for leave, approval needs to be triggered and displayed on all approvers' home page. Approvers list should be - Reporting Manager, Department Head(if leave duration exceeds 3 days). Leave Request…
moreed rejected from HR Account but request still shows pending for employee, allowing 5 other approvers to override HR rejection
first approval step (14 people got a task) expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 1 Array [ - "mgr_approval", + "hr_approval", ] approval chain of Maternity Leave Approval expect(received).toEqual(expected) // deep equality - Expected - 2 + Received + 1 Array [ - StringMatching /^mgr.*\(manager/, - StringMatching /dept_head|department_hea…
mored/, + "hr_approval (hr_partner)", ]
full error

SHR-047 · a maternity request reaches the reporting manager first, then the department head

Error: first approval step (14 people got a task)

expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 1

  Array [
-   "mgr_approval",
+   "hr_approval",
  ]

SHR-047 · maternity leave goes to the reporting manager, then the department head

Error: approval chain of Maternity Leave Approval

expect(received).toEqual(expected) // deep equality

- Expected  - 2
+ Received  + 1

  Array [
-   StringMatching /^mgr.*\(manager/,
-   StringMatching /dept_head|department_head/,
+   "hr_approval (hr_partner)",
  ]
3 tests: 2 fail · 1 pass
tests
  • ✗ SHR-047 · a maternity request reaches the reporting manager first, then the department head tests/feedback/leave/leave-journeys.spec.ts:184
  • ✓ SHR-047 · when HR rejects a maternity request it ends rejected for the employee and nobody else can approve it tests/feedback/leave/leave-journeys.spec.ts:197
  • ✗ SHR-047 · maternity leave goes to the reporting manager, then the department head tests/feedback/leave/leave-rules.spec.ts:219
SHR-084This location is named California but the address is that of Bangalore.OrganizationLocationsOpen — confirmedno location sits in one geography with an address in another @pr; the platform refuses a California location whose address is in Bangalore @journey
locations whose address is in another country than their jurisdiction expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "\"Los Angeles\" (California, America/Los_Angeles) has its address in Bangalore", + ] a California office with a Bangalore address is refused — the API answered 201 expect(received).toBe(expected) // Object.is equality E…
morexpected: 400 Received: 201
full error

SHR-084 · no location sits in one geography with an address in another @pr

Error: locations whose address is in another country than their jurisdiction

expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 3

- Array []
+ Array [
+   "\"Los Angeles\" (California, America/Los_Angeles) has its address in Bangalore",
+ ]

SHR-084 · the platform refuses a California location whose address is in Bangalore @journey

Error: a California office with a Bangalore address is refused — the API answered 201

expect(received).toBe(expected) // Object.is equality

Expected: 400
Received: 201
2 tests: 2 fail
tests
  • ✗ SHR-084 · no location sits in one geography with an address in another @pr tests/feedback/organization/organization.spec.ts:125
  • ✗ SHR-084 · the platform refuses a California location whose address is in Bangalore @journey tests/feedback/organization/organization.spec.ts:133
SHR-088Jurisdiction and Location aren't mappedOrganizationNew EMployeeOpen — confirmedJurisdiction and Location should have validation checks. Employees whose jurisdiction is California cannot have location mapped in Hyderabad.
California + Hyderabad HQ is refused — instead the form sent it and the server accepted every field (it only refused the employee number the test swapped in, so nothing was saved) expect(received).toBe(expected) // Object.is equality Expected: true Received: false
full error & screenshots

SHR-088 · an employee in California cannot be placed at a location in Telangana

Error: California + Hyderabad HQ is refused — instead the form sent it and the server accepted every field (it only refused the employee number the test swapped in, so nothing was saved)

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false
screenshot at failure
1 test: 1 fail
tests
  • ✗ SHR-088 · an employee in California cannot be placed at a location in Telangana tests/feedback/employee-creation/new-employee-form.spec.ts:103
SHR-089Employee Name and Personal Email ID is being accepted under Emergency Contact Name and Official Email IDs respectivelyOrganizationNew EMployeeOpen — confirmedEmployee Name cannot be the same as Emergency Contact Person's Name Personal Email ID cannot be mapped as Official Email IDs. All fields in New Employee Creation should have unique values because there is no scenario that should take duplicate values
"FB Test Hire Abdbdj" as both employee and emergency contact is refused — instead the form sent it and the server accepted every field (it only refused the employee number the test swapped in, so nothing was saved) expect(received).toBe(expected) // Object.is equality Expected: true Received: false one address as both work and personal email is refused — instead the form sent it and the server ac…
morecepted every field (it only refused the employee number the test swapped in, so nothing was saved) expect(received).toBe(expected) // Object.is equality Expected: true Received: false
full error & screenshots

SHR-089 · the emergency contact cannot have the employee's own name

Error: "FB Test Hire Abdbdj" as both employee and emergency contact is refused — instead the form sent it and the server accepted every field (it only refused the employee number the test swapped in, so nothing was saved)

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false

SHR-089 · the personal email cannot be the same as the official (work) email

Error: one address as both work and personal email is refused — instead the form sent it and the server accepted every field (it only refused the employee number the test swapped in, so nothing was saved)

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false
screenshot at failurescreenshot at failure
2 tests: 2 fail
tests
  • ✗ SHR-089 · the emergency contact cannot have the employee's own name tests/feedback/employee-creation/new-employee-form.spec.ts:115
  • ✗ SHR-089 · the personal email cannot be the same as the official (work) email tests/feedback/employee-creation/new-employee-form.spec.ts:126
SHR-119Need filter option for Hired date/date of joining and the entity name in the Organisation ->Employee tabOrganizationOrganisations->EmployeesOpen — confirmed (3 of 4 checks fail)We expect the employees table has the Joined date and Entity name/Organisation name for easy filter and display and a download option of that table is a perfect combo
a joining/hire date filter next to: Filter by department, Filter by position, Filter by location, Filter by status expect(received).toBeGreaterThan(expected) Expected: > 0 Received: 0 an Entity / Organisation column among: COLUMNS, 10, Type, Manager, Status, Sign-in, Department, Position, Location, Jurisdiction, Joined, Reset columns, SAVED VIEWS, 1 expect(received).toBe(expected) // Object.is …
moreequality Expected: true Received: false an Export / Download control for the table (Options offers: COLUMNS | 10 | SAVED VIEWS | 1) expect(received).toBeGreaterThan(expected) Expected: > 0 Received: 0
full error & screenshots

SHR-119 · the Employees table can be filtered by joining date

Error: a joining/hire date filter next to: Filter by department, Filter by position, Filter by location, Filter by status

expect(received).toBeGreaterThan(expected)

Expected: > 0
Received:   0

SHR-119 · the Employees table shows and filters by entity (organisation) name

Error: an Entity / Organisation column among: COLUMNS, 10, Type, Manager, Status, Sign-in, Department, Position, Location, Jurisdiction, Joined, Reset columns, SAVED VIEWS, 1

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false

SHR-119 · the Employees table can be downloaded

Error: an Export / Download control for the table (Options offers: COLUMNS | 10 | SAVED VIEWS | 1)

expect(received).toBeGreaterThan(expected)

Expected: > 0
Received:   0
screenshot at failurescreenshot at failurescreenshot at failure
4 tests: 3 fail · 1 pass
tests
  • ✓ SHR-119 · the Employees table can show the joining date tests/feedback/organization/organization.spec.ts:160
  • ✗ SHR-119 · the Employees table can be filtered by joining date tests/feedback/organization/organization.spec.ts:167
  • ✗ SHR-119 · the Employees table shows and filters by entity (organisation) name tests/feedback/organization/organization.spec.ts:178
  • ✗ SHR-119 · the Employees table can be downloaded tests/feedback/organization/organization.spec.ts:188
SHR-109Exit is showing up in AnnouncementsPolicies & AnnouncementsTo readOpen — confirmedWhen an employee resigns, it shouldn't show up in announcements. In case it is a group-restricted announcement, it would be best routed to Inbox
QA Admin’s Announcements page shows no "last day with the team" post expect(received).toBe(expected) // Object.is equality Expected: 0 Received: 2 Error: no exit is announced in the feed (route it to the Inbox of the group instead) expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 4 - Array [] + Array [
full error & screenshots

SHR-109 · a resignation or exit is not posted in Announcements

Error: QA Admin’s Announcements page shows no "last day with the team" post

expect(received).toBe(expected) // Object.is equality

Expected: 0
Received: 2
Error: no exit is announced in the feed (route it to the Inbox of the group instead)

expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 4

- Array []
+ Array [
+   "\"A change in the team\" —  Single Test One's last day with the team is 2026-10-16. Their work passes to the colleagu… (audience Administration, 2026-10-12)",
+   "\"A change in the team\" —  Bulk Test One's last day with the team is 2026-11-11. Their work passes to the colleagues… (audience Administration, 2026-10-12)",
+ ]
screenshot at failure
1 test: 1 fail
tests
  • ✗ SHR-109 · a resignation or exit is not posted in Announcements tests/feedback/exit/exit-forms.spec.ts:145
SHR-118Celebrations is not showing Service anniversary and Birthday wishesPolicies & AnnouncementsHome -> CelebrationsOpen — confirmed (1 of 2 checks fail)We expect the service anniversary, Birthday notifications are displayed in the employees login on the home page and the email should be gone to the entity group id for the employees belong to entity
admin: Celebrations reads "Celebrations / Quiet week / Work anniversaries show up here a week ahead." — birthdays are not part of it expect(received).toMatch(expected) Expected pattern: /birthday/i Received string: "Celebrations / Quiet week / Work anniversaries show up here a week ahead."
full error & screenshots

SHR-118 · the Home Celebrations card of HR and managers includes birthdays, not only work anniversaries

Error: admin: Celebrations reads "Celebrations / Quiet week / Work anniversaries show up here a week ahead." — birthdays are not part of it

expect(received).toMatch(expected)

Expected pattern: /birthday/i
Received string:  "Celebrations / Quiet week / Work anniversaries show up here a week ahead."
screenshot at failure
3 tests: 1 fail · 1 pass · 1 not run
tests
  • ✓ SHR-118 · employees see birthdays and service anniversaries on their Home tests/feedback/general/general.spec.ts:77
  • ✗ SHR-118 · the Home Celebrations card of HR and managers includes birthdays, not only work anniversaries tests/feedback/general/general.spec.ts:88
  • – SHR-118 · a colleague’s birthday or service anniversary in the coming week is shown tests/feedback/general/general.spec.ts:99
SHR-025When we receive a notification stating offer is released the subject line says "Offer released: offer released" it is recommended that we have it as "Offer released for [candidate name for the Designation at Xyz org]RecruitmentOffer Release notificationOpen — confirmedthe "offer released" mail reads "Offer released for <candidate> for <designation> at <company>"
the internal offer-released subject starts "Offer released for" (it is "{{ candidate.full_name }} has accepted the offer for {{ job_post.title }}") expect(received).toMatch(expected) Expected pattern: /^Offer released for /i Received string: "{{ candidate.full_name }} has accepted the offer for {{ job_post.title }}" Error: it names the company expect(received).toMatch(expected) Expected pattern: …
more/company\.(legal_)?name/ Received string: "{{ candidate.full_name }} has accepted the offer for {{ job_post.title }}"
full error

SHR-025 · the "offer released" mail reads "Offer released for <candidate> for <designation> at <company>"

Error: the internal offer-released subject starts "Offer released for" (it is "{{ candidate.full_name }} has accepted the offer for {{ job_post.title }}")

expect(received).toMatch(expected)

Expected pattern: /^Offer released for /i
Received string:  "{{ candidate.full_name }} has accepted the offer for {{ job_post.title }}"
Error: it names the company

expect(received).toMatch(expected)

Expected pattern: /company\.(legal_)?name/
Received string:  "{{ candidate.full_name }} has accepted the offer for {{ job_post.title }}"
1 test: 1 fail
tests
  • ✗ SHR-025 · the "offer released" mail reads "Offer released for <candidate> for <designation> at <company>" tests/feedback/recruitment-offer/offer-pr.spec.ts:74
SHR-049When we select a Position, the Department is automatically populated. However, under the Hiring Manager field, all employees are currently displayed. The Hiring Manager dropdown should display only the employees belonging to the selected Department, instead of…
more showing all employees.
RecruitmentRequisitionOpen — confirmed (1 of 2 checks fail)the hiring manager list shows only people of the position’s department; the server refuses a hiring manager from another department
a Delivery requisition with Aarav Krishnamurthy. (Executive Office) as hiring manager is refused (got 201) expect(received).toBe(expected) // Object.is equality Expected: 400 Received: 201
full error

SHR-049 · the server refuses a hiring manager from another department

Error: a Delivery requisition with Aarav Krishnamurthy. (Executive Office) as hiring manager is refused (got 201)

expect(received).toBe(expected) // Object.is equality

Expected: 400
Received: 201
2 tests: 1 fail · 1 pass
tests
  • ✓ SHR-049 · the hiring manager list shows only people of the position’s department tests/feedback/recruitment-requisition/form.spec.ts:65
  • ✗ SHR-049 · the server refuses a hiring manager from another department tests/feedback/recruitment-requisition/form.spec.ts:157
SHR-059Once a candidate is selected and moved to the Offer stage, the offer approval should be triggered to the HR Head, irrespective of the department or entity.RecruitmentOffer ApprovalOpen — confirmed (1 of 2 checks fail)the approval goes to the HR Head (the role is in Delivery); the offer approval goes to the HR Head, whatever the department
OFR-2026-0083 · FB Test Pipeline 1015064007 · joining Tuesday 1 December waits on QA Manager, routed by role HR Head expect(received).toMatch(expected) Expected pattern: /hr-head/ Received string: "relationship:requisition_hiring_manager" Error: OFR-2026-0082 · FB Test Pipeline 1015053155 · joining Tuesday 1 December waits on QA Manager, routed by role HR Head expect(received).toMatch(expected) E…
morexpected pattern: /hr-head/ Received string: "relationship:requisition_hiring_manager" Error: OFR-2026-0081 · FB Test Pipeline 1015034909 · joining Tuesday 1 December waits on QA Manager, routed by role HR Head expect(received).toMatch(expected)
full error

SHR-059 · the offer approval goes to the HR Head, whatever the department

Error: OFR-2026-0083 · FB Test Pipeline 1015064007 · joining Tuesday 1 December waits on QA Manager, routed by role HR Head

expect(received).toMatch(expected)

Expected pattern: /hr-head/
Received string:  "relationship:requisition_hiring_manager"
Error: OFR-2026-0082 · FB Test Pipeline 1015053155 · joining Tuesday 1 December waits on QA Manager, routed by role HR Head

expect(received).toMatch(expected)

Expected pattern: /hr-head/
Received string:  "relationship:requisition_hiring_manager"
Error: OFR-2026-0081 · FB Test Pipeline 1015034909 · joining Tuesday 1 December waits on QA Manager, routed by role HR Head

expect(received).toMatch(expected)

Expected pattern: /hr-head/
Received string:  "relationship:requisition_hiring_manager"
Error: OFR-2026-0079 · Delivery Manager · joining Monday 26 October waits on Test Hiring Manager, routed by role HR Head

expect(received).toMatch(expected)

Expected pattern: /hr-head/
Received string:  "relationship:requisition_hiring_manager"
2 tests: 1 fail · 1 pass
tests
  • ✓ SHR-059 · the approval goes to the HR Head (the role is in Delivery) tests/feedback/recruitment-offer/offer-journey.spec.ts:57
  • ✗ SHR-059 · the offer approval goes to the HR Head, whatever the department tests/feedback/recruitment-offer/offer-pr.spec.ts:14
SHR-060The Offer Approval notification does not provide clear information about the candidate’s role, department, entity, CTC, and date of joining. Ideally, the notification should include these details to provide the approver with complete information about the cand…
moreidate and offer.
RecruitmentOffer ApprovalOpen — confirmedthe HR Head's approval panel shows role, department, entity, CTC and date of joining; the offer approval shows role, department, entity, CTC and date of joining
the approval panel shows the department expect(received).toMatch(expected) Expected pattern: /Delivery/ Received string: "Fbtest Candidate ahegfe· Offer approval· CANDIDATE Fbtest Candidate ahegfe REQUEST Fbtest Candidate ahegfe DETAILS the approval item "Fbtest Candidate ahegfe · OFR-2026-0084 · FB Test Pipeline 1015074654 · joining Tuesday 1 December" names the department expect(received).toMa…
moretch(expected) Expected pattern: /Delivery/i Received string: "Fbtest Candidate ahegfe · OFR-2026-0084 · · joining Tuesday 1 December" Error: the approval item "Fbtest Candidate ahegfe · OFR-2026-0084 · FB Test Pipeline 1015074654 · joining Tuesday 1 December" names the entity (OpsMaven Services Pvt. Ltd.) expect(received).toMatch(expected) Expected pattern: /OpsMaven Services|Ops Maven/i Received string: "Fbtest Candidate ahegfe · OFR-2026-0084 · FB Test Pipeline 1015074654 · joining Tuesday 1 December" Error: the approval item "Fbtest Candidate ahegfe · OFR-2026-0084 · FB Test Pipeline 1015074654 · joining Tuesday 1 December" names the CTC expect(received).toMatch(expected)
full error & screenshots

SHR-060 · the HR Head's approval panel shows role, department, entity, CTC and date of joining

Error: the approval panel shows the department

expect(received).toMatch(expected)

Expected pattern: /Delivery/
Received string:  "Fbtest Candidate ahegfe·
Offer approval·
CANDIDATE
Fbtest Candidate ahegfe
REQUEST
Fbtest Candidate ahegfe
DETAILS
FB Test Pipeline 1015074654 · offer OFR-2026-0084 · at HR Head approves the offer
WAITING SINCE
today, 7:50 am
DUE
23 Oct, 12:00 pm
ROLE
FB Test Pipeline 1015074654
OFFER
OFR-2026-0084
JOINING DATE
1 Dec 2026
ANNUAL CTC
₹9,00,000 a year
Approve
Decline
Request changes"
Error: the approval panel shows the entity

expect(received).toMatch(expected)

Expected pattern: /OpsMaven Services|Ops Maven/
Received string:  "Fbtest Candidate ahegfe·
Offer approval·
CANDIDATE
Fbtest Candidate ahegfe
REQUEST
Fbtest Candidate ahegfe
DETAILS

SHR-060 · the offer approval shows role, department, entity, CTC and date of joining

Error: the approval item "Fbtest Candidate ahegfe · OFR-2026-0084 · FB Test Pipeline 1015074654 · joining Tuesday 1 December" names the department

expect(received).toMatch(expected)

Expected pattern: /Delivery/i
Received string:  "Fbtest Candidate ahegfe · OFR-2026-0084 ·  · joining Tuesday 1 December"
Error: the approval item "Fbtest Candidate ahegfe · OFR-2026-0084 · FB Test Pipeline 1015074654 · joining Tuesday 1 December" names the entity (OpsMaven Services Pvt. Ltd.)

expect(received).toMatch(expected)

Expected pattern: /OpsMaven Services|Ops Maven/i
Received string:  "Fbtest Candidate ahegfe · OFR-2026-0084 · FB Test Pipeline 1015074654 · joining Tuesday 1 December"
Error: the approval item "Fbtest Candidate ahegfe · OFR-2026-0084 · FB Test Pipeline 1015074654 · joining Tuesday 1 December" names the CTC

expect(received).toMatch(expected)

Expected pattern: /(₹|INR|Rs\.?)\s?9|900000|\bCTC\b/i
Received string:  "Fbtest Candidate ahegfe · OFR-2026-0084 · FB Test Pipeline 1015074654 · joining Tuesday 1 December"
screenshot at failure
2 tests: 2 fail
tests
  • ✗ SHR-060 · the HR Head's approval panel shows role, department, entity, CTC and date of joining tests/feedback/recruitment-offer/offer-journey.spec.ts:70
  • ✗ SHR-060 · the offer approval shows role, department, entity, CTC and date of joining tests/feedback/recruitment-offer/offer-pr.spec.ts:39
SHR-072When the Department Head sends a requisition back to the Hiring Manager with requested changes, the Hiring Manager should be able to view the comments/reason provided by the Department Head. Currently, the requisition appears as “Draft” in the Hiring Manager’s…
more login, which does not indicate that it has been returned for changes. The status should clearly reflect that the requisition is pending changes/action, along with the Department Head’s comments, so the Hiring Manager can make the required updates accordingly.
RecruitmentRequisitionOpen — confirmed (2 of 3 checks fail)a requisition sent back shows "Changes requested" and the approver’s comment to the hiring manager; the approval progress of a sent-back requisition does not claim it was approved; the hiring manager is told who sent it back
the progress block reads: "Raised Approved Oct 15, 2026 Approval chain Approved Open for sourcing Queued No approval workflow is set up for this yet." expect(received).not.toMatch(expected) Expected pattern: not /\bApproved\b/ Received string: "Raised Approved Oct 15, 2026 Approval chain Approved Open for sourcing Queued exactly one notification per return (got: recruitment.requisition.retur…
morened | Changes requested: REQ-2026-0190 — FB Test Req 10150156 | The department head sent the requisition back with: "FB test: please make it two openings". Make the changes on the requisition and resubmit it. || recruitment.requisition.returned | FB Test Req 10150156 came back with questions | The requisition for FB Test Req 10150156 was returned rather than approved. Please answer the points on it and resubmit; nothing moves until you do.) expect(received).toBe(expected) // Object.is equality Expected: 1 Received: 2
full error & screenshots

SHR-072 · the approval progress of a sent-back requisition does not claim it was approved

Error: the progress block reads: "Raised Approved Oct 15, 2026 Approval chain Approved Open for sourcing Queued No approval workflow is set up for this yet."

expect(received).not.toMatch(expected)

Expected pattern: not /\bApproved\b/
Received string:      "Raised

Approved
Oct 15, 2026

Approval chain

Approved

Open for sourcing

Queued

No approval workflow is set up for this yet."

SHR-072 · the hiring manager is told who sent it back

Error: exactly one notification per return (got: recruitment.requisition.returned | Changes requested: REQ-2026-0190 — FB Test Req 10150156 | The department head sent the requisition back with: "FB test: please make it two openings". Make the changes on the requisition and resubmit it. || recruitment.requisition.returned | FB Test Req 10150156 came back with questions | The requisition for FB Test Req 10150156 was returned rather than approved. Please answer the points on it and resubmit; nothing moves until you do.)

expect(received).toBe(expected) // Object.is equality

Expected: 1
Received: 2
screenshot at failure
3 tests: 2 fail · 1 pass
tests
  • ✓ SHR-072 · a requisition sent back shows "Changes requested" and the approver’s comment to the hiring manager tests/feedback/recruitment-requisition/approval.spec.ts:250
  • ✗ SHR-072 · the approval progress of a sent-back requisition does not claim it was approved tests/feedback/recruitment-requisition/approval.spec.ts:260
  • ✗ SHR-072 · the hiring manager is told who sent it back tests/feedback/recruitment-requisition/approval.spec.ts:269
SHR-073Once a requisition is approved by the Department Head, the HR Head, respective Hiring Manager, and all Recruiters should receive a notification, irrespective of the department or entity associated with the requisition. Currently, these users do not receive a n…
moreotification after the requisition is approved by the Department Head.
RecruitmentRequisitionOpen — confirmed (2 of 3 checks fail)the hiring manager and the HR Head are told when the department head approves; the recruiters are told when the department head approves; once approved, the HR Head, hiring manager and recruiters are all told
the recruiter (hrm) got any notice about REQ-2026-0190 after the department head approved expect(received).toBeGreaterThan(expected) Expected: > 0 Received: 0 hrh got "requisition approved" (has: workflow.approval_request, recruitment.requisition.dept_head_approved, workflow.approval_request, recruitment.requisition.dept_head_approved) expect(received).toBe(expected) // Object.is equality Expec…
moreted: true Received: false
full error

SHR-073 · the recruiters are told when the department head approves

Error: the recruiter (hrm) got any notice about REQ-2026-0190 after the department head approved

expect(received).toBeGreaterThan(expected)

Expected: > 0
Received:   0

SHR-073 · once approved, the HR Head, hiring manager and recruiters are all told

Error: hrh got "requisition approved" (has: workflow.approval_request, recruitment.requisition.dept_head_approved, workflow.approval_request, recruitment.requisition.dept_head_approved)

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false
3 tests: 2 fail · 1 pass
tests
  • ✓ SHR-073 · the hiring manager and the HR Head are told when the department head approves tests/feedback/recruitment-requisition/approval.spec.ts:307
  • ✗ SHR-073 · the recruiters are told when the department head approves tests/feedback/recruitment-requisition/approval.spec.ts:315
  • ✗ SHR-073 · once approved, the HR Head, hiring manager and recruiters are all told tests/feedback/recruitment-requisition/approval.spec.ts:322
SHR-074Once all required approvals are completed, the Hiring Manager should receive a notification and should be able to view the approved requisition and approval details under the Recruitment tab.After approval, the Hiring Manager’s involvement should be limited to…
more reviewing profiles submitted by the Recruiter, reviewing and submitting interview feedback, and viewing the recruitment pipeline for the position, including profiles submitted, interviews scheduled/completed, and the current status of candidates. Activities such as posting the job on the Careers page and managing the interview sequence should be handled by the Recruiter and should not be visible/actionable to the Hiring Manager.Currently, the Hiring Manager is able to view these additional recruitment activities. These should be restricted based on the respective user roles.
RecruitmentRequisitionOpen — confirmed (1 of 2 checks fail)after approval the hiring manager is notified and sees the approval details on the requisition; the hiring manager cannot post the job or run sourcing; that is the recruiter’s job
hiring manager's buttons: Post this role, Tweak items, Start sourcing expect(received).not.toContain(expected) // indexOf Expected value: not "Post this role" Received array: ["Post this role", "Tweak items", "Start sourcing"]
full error & screenshots

SHR-074 · the hiring manager cannot post the job or run sourcing; that is the recruiter’s job

Error: hiring manager's buttons: Post this role, Tweak items, Start sourcing

expect(received).not.toContain(expected) // indexOf

Expected value: not "Post this role"
Received array:     ["Post this role", "Tweak items", "Start sourcing"]
screenshot at failure
2 tests: 1 fail · 1 pass
tests
  • ✓ SHR-074 · after approval the hiring manager is notified and sees the approval details on the requisition tests/feedback/recruitment-requisition/approval.spec.ts:338
  • ✗ SHR-074 · the hiring manager cannot post the job or run sourcing; that is the recruiter’s job tests/feedback/recruitment-requisition/approval.spec.ts:348
SHR-076Please remove the Pre-Onboarding Checklist from the current recruitment workflow, as the checklist will be standard for all employees based on their geographic location. The checklist will vary by geography (India, US, Australia), but will remain the same for …
moreall employees within each respective geography. The HR Operations team will manage the applicable checklist based on the employee’s geography, so this does not need to be part of the recruitment process.
RecruitmentJob PostingOpen — confirmedrecruitment has no pre-onboarding checklist (HR Operations owns it per geography)
the post form asks for no pre-onboarding checklist expect(locator).toHaveCount(expected) failed Locator: getByRole('dialog').filter({ hasText: 'Posts hang off an approved requisition' }).getByText('Pre-onboarding checklist', { exact: true }) Expected: 0 Received: 1 Timeout: 30000ms 63 × locator resolved to 1 element Error: Recruitment has no Pre-onboarding tab expect(locator).toHaveCount(exp…
moreected) failed Locator: locator('#main-content').getByRole('link', { name: 'Pre-onboarding', exact: true }).or(locator('#main-content').getByRole('tab', { name: 'Pre-onboarding' }))
full error & screenshots

SHR-076 · recruitment has no pre-onboarding checklist (HR Operations owns it per geography)

Error: the post form asks for no pre-onboarding checklist

expect(locator).toHaveCount(expected) failed

Locator:  getByRole('dialog').filter({ hasText: 'Posts hang off an approved requisition' }).getByText('Pre-onboarding checklist', { exact: true })
Expected: 0
Received: 1
Timeout:  30000ms

Call log:
  - the post form asks for no pre-onboarding checklist getByRole('dialog').filter({ hasText: 'Posts hang off an approved requisition' }).getByText('Pre-onboarding checklist', { exact: true }) with timeout 30000ms
  - waiting for getByRole('dialog').filter({ hasText: 'Posts hang off an approved requisition' }).getByText('Pre-onboarding checklist', { exact: true })
    63 × locator resolved to 1 element
       - unexpected value "1"

Error: Recruitment has no Pre-onboarding tab

expect(locator).toHaveCount(expected) failed

Locator:  locator('#main-content').getByRole('link', { name: 'Pre-onboarding', exact: true }).or(locator('#main-content').getByRole('tab', { name: 'Pre-onboarding' }))
Expected: 0
Received: 1
Timeout:  30000ms

Call log:
  - Recruitment has no Pre-onboarding tab locator('#main-content').getByRole('link', { name: 'Pre-onboarding', exact: true }).or(locator('#main-content').getByRole('tab', { name: 'Pre-onboarding' })) with timeout 30000ms
  - waiting for locator('#main-content').getByRole('link', { name: 'Pre-onboarding', exact: true }).or(locator('#main-content').getByRole('tab', { name: 'Pre-onboarding' }))
    63 × locator resolved to 1 element
       - unexpected value "1"
screenshot at failure
1 test: 1 fail
tests
  • ✗ SHR-076 · recruitment has no pre-onboarding checklist (HR Operations owns it per geography) tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:120
SHR-078When sending interview panel slots, the interview time should be displayed in the appropriate local time zone based on the geography. Currently, the interview slot time is being displayed in UTC. For India, the time should be displayed in IST, and for other ge…
moreographies, it should reflect the respective local time zone. The system should automatically display the interview slot in the relevant time zone based on the applicable geography.
RecruitmentInterviewOpen — confirmedthe latest interview reminder email gives the interview time in IST, not UTC
"Your interview for FB Test Pipeline 1015073354 is tomorrow" (2026-10-15T02:05:23.384Z) for an interview at 2026-10-15 02:08:00+00 (= 7:38 am IST) should state 7:38 am; it says: Dear Fbtest Candidate ahddfe, A reminder that your FB T1 round interview for FB Test Pipeline 1015073354 with OpsMaven Services Pvt. Ltd. is tomorrow at 15 Oct 2026, 2:08 am, at the place confirmed with you. Please keep an…
more identity document and a copy of you expect(received).toMatch(expected) Expected pattern: /7:38\s*am/i Received string: "Dear Fbtest Candidate ahddfe,· A reminder that your FB T1 round interview for FB Test Pipeline 1015073354 with OpsMaven Services Pvt. Ltd. is tomorrow at 15 Oct 2026, 2:08 am, at the place confirmed with you.· Please keep an identity document and a copy of your resume to hand.· If anything has changed, reply to this email or write to qa.hrmanager@opsmaven.test today."
full error

SHR-078 · the latest interview reminder email gives the interview time in IST, not UTC

Error: "Your interview for FB Test Pipeline 1015073354 is tomorrow" (2026-10-15T02:05:23.384Z) for an interview at 2026-10-15 02:08:00+00 (= 7:38 am IST) should state 7:38 am; it says: Dear Fbtest Candidate ahddfe,

A reminder that your FB T1 round interview for FB Test Pipeline 1015073354 with OpsMaven Services Pvt. Ltd. is tomorrow at 15 Oct 2026, 2:08 am, at the place confirmed with you.

Please keep an identity document and a copy of you

expect(received).toMatch(expected)

Expected pattern: /7:38\s*am/i
Received string:  "Dear Fbtest Candidate ahddfe,·
A reminder that your FB T1 round interview for FB Test Pipeline 1015073354 with OpsMaven Services Pvt. Ltd. is tomorrow at 15 Oct 2026, 2:08 am, at the place confirmed with you.·
Please keep an identity document and a copy of your resume to hand.·
If anything has changed, reply to this email or write to qa.hrmanager@opsmaven.test today."
1 test: 1 fail
tests
  • ✗ SHR-078 · the latest interview reminder email gives the interview time in IST, not UTC tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:71
SHR-079Currently, the HRMS platform is sending meeting invitations to both the candidate and the interviewer. Could you please confirm whether the interview meeting can be conducted through any meeting platform of our choice, such as Microsoft Teams or Google Meet, o…
morer whether the HRMS is integrated with a specific meeting platform? Also, please confirm whether both the candidate and interviewer will receive a reminder notification 15 minutes before the scheduled interview.
RecruitmentInterviewOpen — confirmedthe interview can carry a meeting link of our choice (Teams, Google Meet); candidate and interviewer get a reminder 15 minutes before the interview
the Schedule dialog has a field for the meeting link (it offers only Mode: Video / Onsite / Phone; the API accepts "locationOrLink" but the form never sends it) expect(locator).toBeVisible() failed Locator: getByRole('dialog', { name: /Schedule an interview/ }).getByLabel(/meeting link|location or link|join link|video link/i) Expected: visible Timeout: 5000ms Error: element(s) not found a reminde…
morer fires 15 minutes before the interview. Configured: "Sent by the scheduler within 24 hours of the interview." (candidate); interview-round timers [{"unit":"calendarDays","anchor":"interviewDate","offset":-1}] (the day before, to the candidate only) expect(received).toBe(expected) // Object.is equality Expected: true Received: false
full error & screenshots

SHR-079 · the interview can carry a meeting link of our choice (Teams, Google Meet)

Error: the Schedule dialog has a field for the meeting link (it offers only Mode: Video / Onsite / Phone; the API accepts "locationOrLink" but the form never sends it)

expect(locator).toBeVisible() failed

Locator: getByRole('dialog', { name: /Schedule an interview/ }).getByLabel(/meeting link|location or link|join link|video link/i)
Expected: visible
Timeout: 5000ms
Error: element(s) not found

Call log:
  - the Schedule dialog has a field for the meeting link (it offers only Mode: Video / Onsite / Phone; the API accepts "locationOrLink" but the form never sends it) getByRole('dialog', { name: /Schedule an interview/ }).getByLabel(/meeting link|location or link|join link|video link/i) with timeout 5000ms
  - waiting for getByRole('dialog', { name: /Schedule an interview/ }).getByLabel(/meeting link|location or link|join link|video link/i)

SHR-079 · candidate and interviewer get a reminder 15 minutes before the interview

Error: a reminder fires 15 minutes before the interview. Configured: "Sent by the scheduler within 24 hours of the interview." (candidate); interview-round timers [{"unit":"calendarDays","anchor":"interviewDate","offset":-1}] (the day before, to the candidate only)

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false
screenshot at failure
2 tests: 2 fail
tests
  • ✗ SHR-079 · the interview can carry a meeting link of our choice (Teams, Google Meet) tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:182
  • ✗ SHR-079 · candidate and interviewer get a reminder 15 minutes before the interview tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:193
SHR-081The interviewer is currently receiving the interview notification in the Inbox, but the notification is not clickable. The notification should be clickable and should take the interviewer directly to the relevant interview details/feedback section, so that onc…
moree the interview is completed, the interviewer can submit their feedback accordingly.
RecruitmentInterviewOpen — confirmed (1 of 2 checks fail)the interviewer's notification opens the interview to give feedback; the interviewer's notification opens the interview and its feedback form
the link opens "FB T2 round (too early)" for Fbtest Candidate ahddfe (it lands on the plain Approvals inbox and drops ?interview=; now at https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/inbox) expect(locator).toBeVisible() failed Locator: getByText('FB T2 round (too early)', { exact: true }).first() Expected: visible Timeout: 10000ms Error: element(s) not found
full error & screenshots

SHR-081 · the interviewer's notification opens the interview and its feedback form

Error: the link opens "FB T2 round (too early)" for Fbtest Candidate ahddfe (it lands on the plain Approvals inbox and drops ?interview=; now at https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/inbox)

expect(locator).toBeVisible() failed

Locator: getByText('FB T2 round (too early)', { exact: true }).first()
Expected: visible
Timeout: 10000ms
Error: element(s) not found

Call log:
  - the link opens "FB T2 round (too early)" for Fbtest Candidate ahddfe (it lands on the plain Approvals inbox and drops ?interview=; now at https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/inbox) getByText('FB T2 round (too early)', { exact: true }).first() with timeout 10000ms
  - waiting for getByText('FB T2 round (too early)', { exact: true }).first()
screenshot at failure
2 tests: 1 fail · 1 pass
tests
  • ✓ SHR-081 · the interviewer's notification opens the interview to give feedback tests/feedback/recruitment-pipeline/pipeline-journey.spec.ts:68
  • ✗ SHR-081 · the interviewer's notification opens the interview and its feedback form tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:249
SHR-097Currently, the interviewer can access the scorecard and submit interview feedback only after the recruiter updates the interview status to “Happened.” The interviewer should be able to access the scorecard and submit feedback once the interview has been schedu…
moreled and completed, without depending on the recruiter to update the status manually.
RecruitmentInterviewOpen — confirmed (1 of 2 checks fail)panelists submit their scorecards once the interview has started, with no "Happened" step; the panelist (here also the hiring manager) finds the candidate in Recruitment to open the scorecard
QA Manager chairs the FB T1 round and is the requisition's hiring manager, but Recruitment → Pipeline shows "0 candidates" expect(locator).toBeVisible() failed Locator: locator('#main-content').getByRole('button', { name: /^Fbtest Candidate ahddfe — open details/ }).first() Expected: visible Timeout: 30000ms Error: element(s) not found
full error & screenshots

SHR-097 · the panelist (here also the hiring manager) finds the candidate in Recruitment to open the scorecard

Error: QA Manager chairs the FB T1 round and is the requisition's hiring manager, but Recruitment → Pipeline shows "0 candidates"

expect(locator).toBeVisible() failed

Locator: locator('#main-content').getByRole('button', { name: /^Fbtest Candidate ahddfe — open details/ }).first()
Expected: visible
Timeout: 30000ms
Error: element(s) not found

Call log:
  - QA Manager chairs the FB T1 round and is the requisition's hiring manager, but Recruitment → Pipeline shows "0 candidates" locator('#main-content').getByRole('button', { name: /^Fbtest Candidate ahddfe — open details/ }).first() with timeout 30000ms
  - waiting for locator('#main-content').getByRole('button', { name: /^Fbtest Candidate ahddfe — open details/ }).first()
screenshot at failure
2 tests: 1 fail · 1 pass
tests
  • ✓ SHR-097 · panelists submit their scorecards once the interview has started, with no "Happened" step tests/feedback/recruitment-pipeline/pipeline-journey.spec.ts:89
  • ✗ SHR-097 · the panelist (here also the hiring manager) finds the candidate in Recruitment to open the scorecard tests/feedback/recruitment-pipeline/pipeline-journey.spec.ts:95
SHR-100Clarification required on the requisition approval workflow, as the current process shows that once the Department Head approves the requisition, it is triggered to Vikram, followed by Arav and then the HR HeadRecruitmentRequisitionOpen — confirmed (1 of 2 checks fail)a raised requisition shows its whole approval chain, in order, with the people at each step; the raise form tells the requester every step the request will go through
the form's "where it goes" line names /management|executive/i (it says: "Goes to the department head, then HR.") expect(received).toMatch(expected) Expected pattern: /management|executive/i Received string: "Goes to the department head, then HR."
full error & screenshots

SHR-100 · the raise form tells the requester every step the request will go through

Error: the form's "where it goes" line names /management|executive/i (it says: "Goes to the department head, then HR.")

expect(received).toMatch(expected)

Expected pattern: /management|executive/i
Received string:  "Goes to the department head, then HR."
screenshot at failure
2 tests: 1 fail · 1 pass
tests
  • ✓ SHR-100 · a raised requisition shows its whole approval chain, in order, with the people at each step tests/feedback/recruitment-requisition/approval.spec.ts:294
  • ✗ SHR-100 · the raise form tells the requester every step the request will go through tests/feedback/recruitment-requisition/form.spec.ts:141
SHR-104When a Recruiter raises a requisition on behalf of the Hiring Manager, based on approvals received via email, the requisition should be routed directly to the HR Head as the sole approver, bypassing the standard approval workflowRecruitmentRequisitionOpen — confirmeda requisition the recruiter raises on the hiring manager’s behalf goes to the HR Head only
REQ-2026-0192, raised by the recruiter, is routed: Department Head endorses the headcount (current: Test Department Head) → Management approves the hire (pending: Vikram Raghavan, Aarav Krishnamurthy.) → HR Head approves the requisition (pending: Test HR Head, QA HR Head, Raju Rastogi, Kavya Raghunathan) expect(received).toEqual(expected) // deep equality - Expected - 0 + Received + 2 Array [ …
more+ "approval_department_head", + "approval_management", "approval_hr_head", ]
full error

SHR-104 · a requisition the recruiter raises on the hiring manager’s behalf goes to the HR Head only

Error: REQ-2026-0192, raised by the recruiter, is routed: Department Head endorses the headcount (current: Test Department Head) → Management approves the hire (pending: Vikram Raghavan, Aarav Krishnamurthy.) → HR Head approves the requisition (pending: Test HR Head, QA HR Head, Raju Rastogi, Kavya Raghunathan)

expect(received).toEqual(expected) // deep equality

- Expected  - 0
+ Received  + 2

  Array [
+   "approval_department_head",
+   "approval_management",
    "approval_hr_head",
  ]
1 test: 1 fail
tests
  • ✗ SHR-104 · a requisition the recruiter raises on the hiring manager’s behalf goes to the HR Head only tests/feedback/recruitment-requisition/routing.spec.ts:8
SHR-110Currently, once a candidate profile is uploaded to the Talent Pool, there is no option to move or link the candidate to an existing requisition. An option is required to move candidates from the Talent Pool to the relevant requisition for further processing.RecruitmentTalent PoolOpen — confirmeda talent-pool candidate can be moved to an open requisition
expect(locator).toBeVisible() failed Locator: locator('#main-content').getByText(/candidates? mentions?/) Expected: visible Timeout: 30000ms Error: element(s) not found
full error & screenshots

SHR-110 · a talent-pool candidate can be moved to an open requisition

Error: expect(locator).toBeVisible() failed

Locator: locator('#main-content').getByText(/candidates? mentions?/)
Expected: visible
Timeout: 30000ms
Error: element(s) not found

Call log:
  - Expect "toBeVisible" locator('#main-content').getByText(/candidates? mentions?/) with timeout 30000ms
  - waiting for locator('#main-content').getByText(/candidates? mentions?/)
screenshot at failure
1 test: 1 fail
tests
  • ✗ SHR-110 · a talent-pool candidate can be moved to an open requisition tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:310
SHR-111The system extracts and displays details from the Job Description (JD) uploaded by the Hiring Manager during requisition creation, but the format and layout of the extracted content are incorrect.RecruitmentRequisitionOpen — confirmedan uploaded JD keeps its layout: headings, lists and bold come through as formatting, never as raw tags
the JD title shows as a heading, not as the literal text "<h1>Delivery Manager</h1>" expect(locator).not.toContainText(expected) failed Locator: getByRole('dialog').filter({ hasText: 'Raise a requisition' }).last().locator('[contenteditable=true]').first() Expected substring: not "<h1>" Received string: "<h1>Delivery Manager</h1>We are looking for a Delivery Manager to run two client accounts.Resp…
moreonsibilitiesOwn delivery plans and timelinesRun weekly client reviewsCoach a team of eight engineersRequirementsEight years of software deliveryStrong stakeholder managementLocation: Hyderabad HQ" Timeout: 30000ms 63 × locator resolved to <div tabindex="0" translate="no" contenteditable="true" aria-label="Job description" class="tiptap ProseMirror min-h-32 px-3 py-2 text-sm text-ink focus:outline-none [&_h2]:mt-3 [&_h2]:text-base [&_h2]:font-semibold [&_h3]:mt-2 [&_h3]:text-sm [&_h3]:font-semibold [&_h4]:mt-2 [&_h4]:text-sm [&_h4]:font-medium [&_p]:my-1 [&_ul]:my-1 [&_ul]:list-disc [&_ul]:pl-5 [&_ol]:my-1 [&_ol]:list-decimal [&_ol]:pl-5 [&_a]:underline">…</div>
full error & screenshots

SHR-111 · an uploaded JD keeps its layout: headings, lists and bold come through as formatting, never as raw tags

Error: the JD title shows as a heading, not as the literal text "<h1>Delivery Manager</h1>"

expect(locator).not.toContainText(expected) failed

Locator: getByRole('dialog').filter({ hasText: 'Raise a requisition' }).last().locator('[contenteditable=true]').first()
Expected substring: not "<h1>"
Received string: "<h1>Delivery Manager</h1>We are looking for a Delivery Manager to run two client accounts.ResponsibilitiesOwn delivery plans and timelinesRun weekly client reviewsCoach a team of eight engineersRequirementsEight years of software deliveryStrong stakeholder managementLocation: Hyderabad HQ"
Timeout: 30000ms

Call log:
  - the JD title shows as a heading, not as the literal text "<h1>Delivery Manager</h1>" getByRole('dialog').filter({ hasText: 'Raise a requisition' }).last().locator('[contenteditable=true]').first() with timeout 30000ms
  - waiting for getByRole('dialog').filter({ hasText: 'Raise a requisition' }).last().locator('[contenteditable=true]').first()
    63 × locator resolved to <div tabindex="0" translate="no" contenteditable="true" aria-label="Job description" class="tiptap ProseMirror min-h-32 px-3 py-2 text-sm text-ink focus:outline-none [&_h2]:mt-3 [&_h2]:text-base [&_h2]:font-semibold [&_h3]:mt-2 [&_h3]:text-sm [&_h3]:font-semibold [&_h4]:mt-2 [&_h4]:text-sm [&_h4]:font-medium [&_p]:my-1 [&_ul]:my-1 [&_ul]:list-disc [&_ul]:pl-5 [&_ol]:my-1 [&_ol]:list-decimal [&_ol]:pl-5 [&_a]:underline">…</div>
       - unexpected value "<h1>Delivery Manager</h1>We are looking for a Delivery Manager to run two client accounts.ResponsibilitiesOwn delivery plans and timelinesRun weekly client reviewsCoach a team of eight engineersRequirementsEight years of software deliveryStrong stakeholder managementLocation: Hyderabad HQ"
screenshot at failure
1 test: 1 fail
tests
  • ✗ SHR-111 · an uploaded JD keeps its layout: headings, lists and bold come through as formatting, never as raw tags tests/feedback/recruitment-requisition/form.spec.ts:25
SHR-112The system should prevent scheduling the next interview round until the previous interviewer has submitted their feedback.RecruitmentRequisitionOpen — confirmedthe next round can't be scheduled before the previous round's feedback is in
scheduling T2 while T1 feedback is pending: {"id":"58d6f79f-858c-418e-a769-0e0c9f938035","conflicts":[]} expect(received).toBe(expected) // Object.is equality Expected: 409 Received: 201
full error

SHR-112 · the next round can't be scheduled before the previous round's feedback is in

Error: scheduling T2 while T1 feedback is pending: {"id":"58d6f79f-858c-418e-a769-0e0c9f938035","conflicts":[]}

expect(received).toBe(expected) // Object.is equality

Expected: 409
Received: 201
1 test: 1 fail
tests
  • ✗ SHR-112 · the next round can't be scheduled before the previous round's feedback is in tests/feedback/recruitment-pipeline/pipeline-journey.spec.ts:82
SHR-113The system should automatically send an email reminder to the respective interviewer if interview feedback is not submitted within 24 hours of the interview.RecruitmentRequisitionOpen — confirmed (1 of 2 checks fail)the interviewer is reminded when interview feedback is not in; the feedback reminder reaches the interviewer by email within 24 hours of the interview
the reminder "ta_feedback_due" is a notification template ("Your feedback on {{ candidate.full_name }} is due today"), and the email channel of "Scorecard pending" is off for an interviewer (QA Manager), so no email goes out expect(received).toBe(expected) // Object.is equality Expected: true Received: false
full error

SHR-113 · the feedback reminder reaches the interviewer by email within 24 hours of the interview

Error: the reminder "ta_feedback_due" is a notification template ("Your feedback on {{ candidate.full_name }} is due today"), and the email channel of "Scorecard pending" is off for an interviewer (QA Manager), so no email goes out

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false
2 tests: 1 fail · 1 pass
tests
  • ✓ SHR-113 · the interviewer is reminded when interview feedback is not in tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:288
  • ✗ SHR-113 · the feedback reminder reaches the interviewer by email within 24 hours of the interview tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:296
SHR-114A candidate is interviewed for Role A, and after all interview rounds, the panel decides that the candidate is better suited for Role B. The Recruiter should be able to transfer the candidate to Role B, whether it is an existing vacancy or a newly created posi…
moretion, without starting the candidate's profile from scratch.
RecruitmentRequisitionOpen — confirmeda candidate can be transferred to another role without starting over
TimeoutError: locator.waitFor: Timeout 90000ms exceeded.
full error & screenshots

SHR-114 · a candidate can be transferred to another role without starting over

TimeoutError: locator.waitFor: Timeout 90000ms exceeded.
Call log:
  - waiting for locator('#main-content') to be visible
screenshot at failure
1 test: 1 fail
tests
  • ✗ SHR-114 · a candidate can be transferred to another role without starting over tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:322
SHR-115After uploading a resume, the system automatically extracts candidate details. However, due to variations in resume formats, some information may be extracted incorrectly. Currently, an option is required to review and edit the extracted details before saving …
morethe candidate profile.
RecruitmentRequisitionOpen — confirmedparsed résumé details can be reviewed and corrected before the candidate is saved
the first Import click shows the extracted name, email and phone for review instead of saving the candidate straight away expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 3 - Array [] + Array [ + "POST /api/company/talent/recruitment/candidates/bulk-import", + ]
full error & screenshots

SHR-115 · parsed résumé details can be reviewed and corrected before the candidate is saved

Error: the first Import click shows the extracted name, email and phone for review instead of saving the candidate straight away

expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 3

- Array []
+ Array [
+   "POST /api/company/talent/recruitment/candidates/bulk-import",
+ ]
screenshot at failure
1 test: 1 fail
tests
  • ✗ SHR-115 · parsed résumé details can be reviewed and corrected before the candidate is saved tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:334
SHR-116When Approver 2 requests changes to a requisition, it is returned to the Hiring Manager for modification. Once the Hiring Manager resubmits the revised requisition, it should be routed directly to Approver 2, who requested the changes, rather than going back t…
moreo Approver 1.
RecruitmentRequisitionOpen — confirmedafter changes are asked for, the resubmitted requisition goes straight back to the approver who asked
the HR Head asked for the changes; the resubmitted run is with: approval_department_head expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 1 Array [ - "approval_hr_head", + "approval_department_head", ]
full error & screenshots

SHR-116 · after changes are asked for, the resubmitted requisition goes straight back to the approver who asked

Error: the HR Head asked for the changes; the resubmitted run is with: approval_department_head

expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 1

  Array [
-   "approval_hr_head",
+   "approval_department_head",
  ]
screenshot at failure
1 test: 1 fail
tests
  • ✗ SHR-116 · after changes are asked for, the resubmitted requisition goes straight back to the approver who asked tests/feedback/recruitment-requisition/approval.spec.ts:286
SHR-117When the Hiring Manager requests to close a requisition or modify the required headcount (e.g., reducing the requirement from two positions to one), the system should trigger the same approval workflow, hierarchy, and sequence as followed during the initial re…
morequisition approval process.
RecruitmentRequisitionOpen — confirmedreducing the headcount of an approved requisition goes through the approval chain again; a hiring manager’s request to close a requisition goes through the approval chain
2 → 1 openings: hiring manager PATCH 403 {"code":"REQUISITION_NOT_EDITABLE","message":"An approved requisition is edited by HR or the Super Admin","requestId":"f809cd23-46db-4fe9-92d9-67cfa1db5f29"}; HR PATCH 200 {"id":"1dc6c83d-e9e1-4c0d-88ca-ab08c856936f"}; afterwards status "approved", openings 1, new approval runs: 0 expect(received).toBe(expected) // Object.is equality Expected: true Received…
more: false Close requisition by the hiring manager → 200 {"id":"1dc6c83d-e9e1-4c0d-88ca-ab08c856936f","status":"closed"}; status "closed", approval runs started: 0 expect(received).toBe(expected) // Object.is equality Expected: false Received: true
full error & screenshots

SHR-117 · reducing the headcount of an approved requisition goes through the approval chain again

Error: 2 → 1 openings: hiring manager PATCH 403 {"code":"REQUISITION_NOT_EDITABLE","message":"An approved requisition is edited by HR or the Super Admin","requestId":"f809cd23-46db-4fe9-92d9-67cfa1db5f29"}; HR PATCH 200 {"id":"1dc6c83d-e9e1-4c0d-88ca-ab08c856936f"}; afterwards status "approved", openings 1, new approval runs: 0

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false

SHR-117 · a hiring manager’s request to close a requisition goes through the approval chain

Error: Close requisition by the hiring manager → 200 {"id":"1dc6c83d-e9e1-4c0d-88ca-ab08c856936f","status":"closed"}; status "closed", approval runs started: 0

expect(received).toBe(expected) // Object.is equality

Expected: false
Received: true
screenshot at failure
2 tests: 2 fail
tests
  • ✗ SHR-117 · reducing the headcount of an approved requisition goes through the approval chain again tests/feedback/recruitment-requisition/approval.spec.ts:376
  • ✗ SHR-117 · a hiring manager’s request to close a requisition goes through the approval chain tests/feedback/recruitment-requisition/approval.spec.ts:385
SHR-120Once the Recruiter submits an offer for approval, the HR Head should receive an approval request in their inbox. Currently, the approval request is not appearing in the HR Head’s inbox,RecruitmentOfferOpen — confirmed (1 of 2 checks fail)QA HR Head finds the offer approval in the Inbox; offers waiting for approval are in the HR Head's inbox
every offer waiting for approval is in QA HR Head's inbox expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 9 - Array [] + Array [ + "OFR-2026-0083 · FB Test Pipeline 1015064007 · joining Tuesday 1 December (waiting on QA Manager)", + "OFR-2026-0082 · FB Test Pipeline 1015053155 · joining Tuesday 1 December (waiting on QA Manager)", + "OFR-2026-0081 · FB Test …
morePipeline 1015034909 · joining Tuesday 1 December (waiting on QA Manager)", + "OFR-2026-0079 · Delivery Manager · joining Monday 26 October (waiting on Test Hiring Manager)",
full error

SHR-120 · offers waiting for approval are in the HR Head's inbox

Error: every offer waiting for approval is in QA HR Head's inbox

expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 9

- Array []
+ Array [
+   "OFR-2026-0083 · FB Test Pipeline 1015064007 · joining Tuesday 1 December (waiting on QA Manager)",
+   "OFR-2026-0082 · FB Test Pipeline 1015053155 · joining Tuesday 1 December (waiting on QA Manager)",
+   "OFR-2026-0081 · FB Test Pipeline 1015034909 · joining Tuesday 1 December (waiting on QA Manager)",
+   "OFR-2026-0079 · Delivery Manager · joining Monday 26 October (waiting on Test Hiring Manager)",
+   "OFR-2026-0072 · Sr. Associate · joining Monday 19 October (waiting on Aarav Krishnamurthy.)",
+   "OFR-2026-0066 · Recruiter · joining Thursday 8 October (waiting on Aarav Krishnamurthy.)",
+   "OFR-2026-0049 · Demo Probe Role · joining Monday 19 October (waiting on Aarav Krishnamurthy.)",
+ ]
2 tests: 1 fail · 1 pass
tests
  • ✓ SHR-120 · QA HR Head finds the offer approval in the Inbox tests/feedback/recruitment-offer/offer-journey.spec.ts:64
  • ✗ SHR-120 · offers waiting for approval are in the HR Head's inbox tests/feedback/recruitment-offer/offer-pr.spec.ts:29
SHR-126The Recruiter or any user with the appropriate access permissions should be able to view the complete interview feedback, including ratings, questionnaire responses, recommendations, and overall feedback comments.RecruitmentInterview feedbackOpen — confirmedthe recruiter reads each panelist's comments and written answers on the profile; the recruiter sees the full feedback: ratings, written answers, recommendation and comments
QA Manager's comments are visible expect(locator).toBeVisible() failed Locator: getByRole('dialog').filter({ hasText: 'INTERVIEWS' }).last().getByText('FB test overall comment by mgr').first() Expected: visible Timeout: 30000ms Error: element(s) not found QA Manager's written answer to "How did you find their body language?" ("FB test answer to: How did you find their body language?") on Fbtest C…
moreandidate ahddfe (FB T1 round) is shown. The interviews section shows only: INTERVIEWS / Schedule / T1 / FB T2 round (too early) / scheduled / Reschedule / Cancel interview / Oct 16, 2026, 7:36 AM / Panel: / QA Manager (chair) / Awaiting / T1 / FB T1 round / completed / Oct 15, 2026, 7:38 AM / Panel: / QA Manager (chair) / Submitted / Advance · 4/5 / QA Department Head / Submitted / Advance · 4/5 expect(received).toContain(expected) // indexOf Expected value: "FB test answer to: How did you find their body language?" Received array: ["INTERVIEWS", "", "Schedule", "T1", "FB T2 round (too early)", "scheduled", "Reschedule", "Cancel interview", "Oct 16, 2026, 7:36 AM", "", …] Error: the overall comments "FB test overall comment by mgr" are shown expect(received).toContain(expected) // indexOf Expected value: "FB test overall comment by mgr" Received array: ["INTERVIEWS", "", "Schedule", "T1", "FB T2 round (too early)", "scheduled", "Reschedule", "Cancel interview", "Oct 16, 2026, 7:36 AM", "", …]
full error & screenshots

SHR-126 · the recruiter reads each panelist's comments and written answers on the profile

Error: QA Manager's comments are visible

expect(locator).toBeVisible() failed

Locator: getByRole('dialog').filter({ hasText: 'INTERVIEWS' }).last().getByText('FB test overall comment by mgr').first()
Expected: visible
Timeout: 30000ms
Error: element(s) not found

Call log:
  - QA Manager's comments are visible getByRole('dialog').filter({ hasText: 'INTERVIEWS' }).last().getByText('FB test overall comment by mgr').first() with timeout 30000ms
  - waiting for getByRole('dialog').filter({ hasText: 'INTERVIEWS' }).last().getByText('FB test overall comment by mgr').first()

SHR-126 · the recruiter sees the full feedback: ratings, written answers, recommendation and comments

Error: QA Manager's written answer to "How did you find their body language?" ("FB test answer to: How did you find their body language?") on Fbtest Candidate ahddfe (FB T1 round) is shown. The interviews section shows only: INTERVIEWS / Schedule / T1 / FB T2 round (too early) / scheduled / Reschedule / Cancel interview / Oct 16, 2026, 7:36 AM / Panel: / QA Manager (chair) / Awaiting / T1 / FB T1 round / completed / Oct 15, 2026, 7:38 AM / Panel: / QA Manager (chair) / Submitted / Advance · 4/5 / QA Department Head / Submitted / Advance · 4/5

expect(received).toContain(expected) // indexOf

Expected value: "FB test answer to: How did you find their body language?"
Received array: ["INTERVIEWS", "", "Schedule", "T1", "FB T2 round (too early)", "scheduled", "Reschedule", "Cancel interview", "Oct 16, 2026, 7:36 AM", "", …]
Error: the overall comments "FB test overall comment by mgr" are shown

expect(received).toContain(expected) // indexOf

Expected value: "FB test overall comment by mgr"
Received array: ["INTERVIEWS", "", "Schedule", "T1", "FB T2 round (too early)", "scheduled", "Reschedule", "Cancel interview", "Oct 16, 2026, 7:36 AM", "", …]
screenshot at failurescreenshot at failure
2 tests: 2 fail
tests
  • ✗ SHR-126 · the recruiter reads each panelist's comments and written answers on the profile tests/feedback/recruitment-pipeline/pipeline-journey.spec.ts:114
  • ✗ SHR-126 · the recruiter sees the full feedback: ratings, written answers, recommendation and comments tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:259
SHR-042Candidate form doesnt have submit option or an acknowledgment that the documents are submittedDocumentsJoining documentsNot verified this runNeed both the submit option and acknowledgment message to Candidate. It should allow candidate to submit the documents incase if they have missed any fields.
Not checked in this run: needs a candidate upload link (E2E_PREBOARDING_LINK): the link is only emailed to the candidate.
1 test: 1 not run
tests
  • – SHR-042 · the candidate’s document form has a Submit button and confirms the submission tests/feedback/onboarding/onboarding-board.spec.ts:109
SHR-125Received an email notification that says "Someone who reports to you has not completed "Delivery Manager" . the message needs to be rectified so that reader understands what is expected Someone who reports to you has not completed "Delivery Manager" and its du…
moree time has passed. The task stays with them; this is so you can follow up.
General / OtherEmail notificationNot verified this runthe overdue-task note to a manager names the person, the task and what to do
Not checked in this run: no overdue follow-up notification among the newest notifications of dh, mgr, hrh, hrm, spoc or admin.
1 test: 1 not run
tests
  • – SHR-125 · the overdue-task note to a manager names the person, the task and what to do tests/feedback/general/general.spec.ts:116
SHR-044Time input fields are missing. No notifications triggered.OrientationSchedule a SessionPartly verified — 1 of 2 checks not runAttendees must receive notification as soon as the meeting is scheduled Start Time and End Time fields must be added.
1 check passed; not run: Cannot verify delivery: attendees can only be new joiners, and no new joiner has a QA session.
2 tests: 1 pass · 1 not run
tests
  • ✓ SHR-044 · the schedule form has Start time and End time tests/feedback/onboarding/orientation-and-self-service.spec.ts:17
  • – SHR-044 · attendees are notified as soon as the session is scheduled tests/feedback/onboarding/orientation-and-self-service.spec.ts:27
SHR-022Acknowledgement email sent to the candidate confirming that we have received their application states " Hi Name: [ followed by candidate's name]RecruitmentNotificationsPartly verified — 1 of 2 checks not runExpected Result: It should say Hi [Candidate' actual name] followed by the message
1 check passed; not run: adds talent-pool candidates that cannot be deleted (no candidate delete); runs weekly with E2E_ALLOW_UNDELETABLE=1.
2 tests: 1 pass · 1 not run
tests
  • ✓ SHR-022 · the application acknowledgement greets the candidate by name ("Hi <name>,") tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:62
  • – SHR-022 · a résumé line "Name: Kabir" gives the name "Kabir", so emails don't say "Hi Name: Kabir" tests/feedback/recruitment-pipeline/pool-import.spec.ts:41
SHR-077The system should validate the candidate’s email ID while uploading or adding a resume. If a candidate with the same email ID already exists in the system, it should identify the duplicate and prevent the creation of another candidate record. Currently, the sy…
morestem is allowing resumes to be added with the same email ID, which can result in duplicate candidate records.
Recruitmentcandidate submissionNot verified this runa second résumé with the same email does not create a second candidate
Not checked in this run: adds talent-pool candidates that cannot be deleted (no candidate delete); runs weekly with E2E_ALLOW_UNDELETABLE=1.
1 test: 1 not run
tests
  • – SHR-077 · a second résumé with the same email does not create a second candidate tests/feedback/recruitment-pipeline/pool-import.spec.ts:50
SHR-102The Parse option is not working correctly, as it is extracting the heading instead of the candidate's name.RecruitmentParseNot verified this runthe parser takes the candidate's name, not a section heading
Not checked in this run: adds talent-pool candidates that cannot be deleted (no candidate delete); runs weekly with E2E_ALLOW_UNDELETABLE=1.
1 test: 1 not run
tests
  • – SHR-102 · the parser takes the candidate's name, not a section heading tests/feedback/recruitment-pipeline/pool-import.spec.ts:24
SHR-015Issue: When applying for leave from 22 Oct 2026 to 24 Oct 2026, the system displays “No working days in that range — check the dates.” However, 22 Oct 2026 (Thursday) and 23 Oct 2026 (Friday) are weekdays/working dates, so the system should not treat the entir…
moree selected period as having no working days.-Checked from- ishita.bhattacharya@opsmaven.test
AttendanceAttendanceWorks as expectedThe system should identify the applicable working days within the selected date range and allow the leave request accordingly
As expected: 2 checks passed.
2 tests: 2 pass
tests
  • ✓ SHR-015 · a Thursday–Saturday range counts its two working days (day-count API) tests/feedback/leave/leave-rules.spec.ts:64
  • ✓ SHR-015 · the leave form accepts a Thursday–Saturday range instead of "No working days in that range" tests/feedback/leave/leave-rules.spec.ts:74
SHR-040through employee self service mode I was able to apply for regularization for 2nd october which is a holidayAttendanceRegularisationWorks as expectedit should not accept regularization on holidays
As expected: 3 checks passed.
3 tests: 3 pass
tests
  • ✓ SHR-040 · the server refuses a correction for a holiday (2 Oct) tests/feedback/attendance/attendance-journeys.spec.ts:65
  • ✓ SHR-040 · a holiday (2 Oct) cannot be picked for a correction: the form explains and won’t send tests/feedback/attendance/attendance-pr.spec.ts:84
  • ✓ SHR-040 · the calendar does not offer a holiday for correction tests/feedback/attendance/attendance-pr.spec.ts:96
SHR-041Through employee self service option, it allows you to click on option called OT & Comp off and button says claim OT. cyrrently for us OT & Comp off are two separate things. can we rename claim OT to Claim compoffAttendanceOT & CompoffWorks as expectedthe employee button reads "Claim comp-off", not "Claim OT"
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-041 · the employee button reads "Claim comp-off", not "Claim OT" tests/feedback/attendance/attendance-pr.spec.ts:126
SHR-064Once the employee clock in and clock out after sometime the employee is unable to clock in again as the clock in again option is not accessibleAttendanceAttendanceWorks as expectedwe need an option to clock in again to capture the actual working hours
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-064 · after clocking out the employee can clock in again, and both sessions count tests/feedback/attendance/attendance-journeys.spec.ts:37
SHR-065Unable to upload the shift rosterAttendanceAttendanceWorks as expectedThere is no option to download the shift roater
As expected: 3 checks passed.
3 tests: 3 pass
tests
  • ✓ SHR-065 · HR Manager uploads a roster file and the roster takes it tests/feedback/attendance/attendance-journeys.spec.ts:78
  • ✓ SHR-065 · admin: the roster downloads, and Upload roster offers a template to start from tests/feedback/attendance/attendance-pr.spec.ts:137
  • ✓ SHR-065 · hrm: the roster downloads, and Upload roster offers a template to start from tests/feedback/attendance/attendance-pr.spec.ts:137
SHR-066There is no option to downlaod attendance reportAttendanceAttendanceWorks as expectedThere is no option to downlaod attendance report
As expected: 3 checks passed.
3 tests: 3 pass
tests
  • ✓ SHR-066 · admin: the attendance report downloads with every day's punches and hours tests/feedback/attendance/attendance-pr.spec.ts:161
  • ✓ SHR-066 · hrm: the attendance report downloads with every day's punches and hours tests/feedback/attendance/attendance-pr.spec.ts:161
  • ✓ SHR-066 · admin: the monthly muster downloads with one row per person and the totals tests/feedback/attendance/attendance-pr.spec.ts:173
SHR-067There is no option to download leave reportsAttendanceAttendanceWorks as expectedThere is no option to download leave reports
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-067 · HR can download a leave report (requests and balances) tests/feedback/leave/leave-rules.spec.ts:347
SHR-0021. Name - Special Characters () being accepted 2. Emergency Contact - Accepting the same number as employee personal and emergency contact numbers 3. DOJ - Do not allow employee creation where the DOJ pre-dated before current pay cycleEmployee LifecycleNew Employee CreationWorks as expectedNames cannot have special characters or extra spaces Emergency Contact cannot be the same as employee's number Restrict predated DOJ only upto the current pay cycle. Ex. Once September ends, do not allow creation of employees whose DOJ falls in September or be…
morefore
As expected: 3 checks passed.
3 tests: 3 pass
tests
  • ✓ SHR-002 · a legal name with special characters or extra spaces is refused tests/feedback/employee-creation/new-employee-form.spec.ts:13
  • ✓ SHR-002 · the emergency contact number cannot be the employee's own number tests/feedback/employee-creation/new-employee-form.spec.ts:29
  • ✓ SHR-002 · a joining date before the current pay cycle is refused tests/feedback/employee-creation/new-employee-form.spec.ts:39
SHR-003Employee Class(Can this be auto-populated or have validation checks?) - It is allowing mapping HR Head as an Intern Link Employee Class to Reports to - Only employees classified as Management can be created without Reporting Manager being defined.Employee LifecycleNew Employee CreationWorks as expectedPosition needs to be mapped to auto-map to class and Reporting Manager field needs to be made mandatory for everyone below Management Class
As expected: 2 checks passed.
2 tests: 2 pass
tests
  • ✓ SHR-003 · the employee class comes from the position and cannot be picked by hand tests/feedback/employee-creation/new-employee-form.spec.ts:56
  • ✓ SHR-003 · everyone below Management needs a reporting manager tests/feedback/employee-creation/new-employee-form.spec.ts:70
SHR-011Unable to login using pre-existing employees as wellEmployee LifecycleLoginWorks as expectedpre-existing employees can sign in and use the app
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-011 · pre-existing employees can sign in and use the app tests/feedback/employee-creation/positions-import-access.spec.ts:149
SHR-012Issue: In Meera Nair’s case, Induction is showing as completed despite the overall onboarding progress being 0%. Also, key employee information such as Employee ID and Email ID is not displaying in the details section.Employee LifecycleOnboardingWorks as expectedExpected Result: The stages should reflect the actual onboarding progress, and the Employee ID and Email ID should be displayed correctly once available
As expected: 2 checks passed.
2 tests: 2 pass
tests
  • ✓ SHR-012 · a card at 0% progress shows no stage as completed tests/feedback/onboarding/onboarding-board.spec.ts:14
  • ✓ SHR-012 · the joiner panel shows the Employee ID and email once they exist tests/feedback/onboarding/onboarding-board.spec.ts:47
SHR-029Query: Could you please clarify the criteria for each Employee Class: Management, Professional, Staff, Operations, and Intern? It would help us understand which employees/positions should fall under each classification and ensure that the correct class is sele…
morected during employee creation.
Employee LifecycleEmployee CreationWorks as expectedeach employee class explains which roles belong in it
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-029 · each employee class explains which roles belong in it tests/feedback/employee-creation/positions-import-access.spec.ts:15
SHR-031Issue: The employee ID/record is being generated successfully, but the login credentials/password setup email is not being received. I tested this using my own email address as well, but no email has been received either in the HR mailbox or in my personal/wor…
morek mailbox. The screen confirms that an invitation to set the password has been emailed, however, the email is not being delivered.
Employee LifecycleEmployee CreationWorks as expectedan invitation to set a password is recorded, confirmed and can be re-sent
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-031 · an invitation to set a password is recorded, confirmed and can be re-sent tests/feedback/employee-creation/positions-import-access.spec.ts:182
SHR-035Issue: The error notification “Could not save - Position code is already in use” continues to remain on the screen and does not disappear automatically. Even after navigating to or working on other options/modules, the notification remains visible. Ideally, th…
moree notification should disappear automatically after a few seconds or when the user navigates away from the relevant action.
Employee LifecyclePosition CreationWorks as expected"Position code is already in use" goes away by itself
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-035 · "Position code is already in use" goes away by itself tests/feedback/employee-creation/positions-import-access.spec.ts:32
SHR-038Observation: The required positions are already created and available in the system, but during bulk employee import, the system is showing the error “Position: no position called …” and is not recognising the positions provided in the import template. Please …
morecheck whether the bulk import is correctly fetching/matching the positions already configured in the system.
Employee LifecycleBulk UploadWorks as expectedthe import recognises positions that already exist (preview only, nothing imported)
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-038 · the import recognises positions that already exist (preview only, nothing imported) tests/feedback/employee-creation/positions-import-access.spec.ts:68
SHR-062Currently, employees do not have an option to submit their resignation through the system. The resignation/separation process can only be initiated by the Super Admin.Employee LifecycleExitWorks as expectedan employee can submit their own resignation in the system
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-062 · an employee can submit their own resignation in the system tests/feedback/exit/exit-forms.spec.ts:53
SHR-106Although phone number has been provided in the recommended length, it is throwing an errorEmployee LifecycleEmployee CreationWorks as expectedPlease investigate this error
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-106 · a phone number of the right length is accepted (India and US) tests/feedback/employee-creation/new-employee-form.spec.ts:146
SHR-021for employee Kavya, Floating holidays balance is showing as 4. I tried applying for leave from 1st to 21st oct which is 13 days. it gave an error saying employee cannot be foundLeaveApply LeaveWorks as expectedExpected result: show a message that this leave type has insuffient balance for the total number of days, the leave has been applied
As expected: 2 checks passed.
2 tests: 2 pass
tests
  • ✓ SHR-021 · sending more Floating Holidays than the balance is refused with a balance message tests/feedback/leave/leave-journeys.spec.ts:155
  • ✓ SHR-021 · too few Floating Holidays shows an "insufficient balance" message, not "employee cannot be found" tests/feedback/leave/leave-rules.spec.ts:83
SHR-043Agenda is a file-upload field that captures the new joinee's 30-day Onboarding Agenda. the description needs to change. currently the button says record. it should have an option of uploading the agendaOnboardingPreboardingWorks as expectedMake Agenda a file-upload field accepting CSV/XLSX and update the description from "One line Agenda" to "New Joinee's 30-day KT Plan"
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-043 · Agenda is a CSV/XLSX upload for the 30-day KT plan tests/feedback/onboarding/onboarding-board.spec.ts:78
SHR-026Issues Observed: Auto-fill: Personal Email and Emergency Contact details should not be auto-filled using the candidate’s details, as these can be different. Save as Draft: There is no option to save partially entered employee details. If the form is accidental…
morely closed, all the details need to be entered again. A Save as Draft option is required.
OrganizationNew Employee CreationWorks as expecteda partly filled form can be saved as a draft and comes back after closing; converting a candidate does not copy their application email into Personal email
As expected: 2 checks passed.
2 tests: 2 pass
tests
  • ✓ SHR-026 · a partly filled form can be saved as a draft and comes back after closing tests/feedback/employee-creation/new-employee-form.spec.ts:173
  • ✓ SHR-026 · converting a candidate does not copy their application email into Personal email tests/feedback/employee-creation/positions-import-access.spec.ts:161
SHR-028Observation: When “Other” is selected under Kind, should the system provide an additional text field to specify the type of location? Currently, selecting “Other” does not provide an option to enter further details. Also If the selected location Kind is anythi…
moreng other than “Remote,” the Address field should be mandatory. For a Remote location, the Address field can remain optional, as there may not be a physical office address associated with the location.
OrganizationLocation CreationWorks as expectedKind "Other" asks what kind of location it is; the address is mandatory unless the location is Remote
As expected: 2 checks passed.
2 tests: 2 pass
tests
  • ✓ SHR-028 · Kind "Other" asks what kind of location it is tests/feedback/organization/organization.spec.ts:80
  • ✓ SHR-028 · the address is mandatory unless the location is Remote tests/feedback/organization/organization.spec.ts:92
SHR-045Attendees list isn't sought at the time of scheduling a session. I have to schedule a meeting and then add attendees through manage attendees.OrientationSchedule a SessionWorks as expectedAdd a field where mandatory and optional attendees can be added while scheduling the session in the first window with the option to edit this list later
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-045 · mandatory and optional attendees are picked in the schedule window and can be changed later tests/feedback/onboarding/orientation-and-self-service.spec.ts:40
SHR-017Issue: After Kavya raised the requisition, Vikram, who is the reporting manager, received the approval notification. However, we could not see the notification in his Inbox to approve the requisition.RecruitmentRequisition CreationWorks as expectedthe approver gets the requisition in their Inbox to act on
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-017 · the approver gets the requisition in their Inbox to act on tests/feedback/recruitment-requisition/approval.spec.ts:223
SHR-023We have scheduled two interviews for the candidate Degala Bindhu, and the respective interview panels have submitted their feedback. However, we are unable to move the candidate to the next stage, as the system is showing an error stating that the scorecards a…
morere not ready.
RecruitmentInterviewWorks as expectedwith both scorecards in, the candidate moves to the next stage
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-023 · with both scorecards in, the candidate moves to the next stage tests/feedback/recruitment-pipeline/pipeline-journey.spec.ts:105
SHR-024Enhancement: While creating a requisition, we need an option to add or upload the Job Description (JD). Currently, there is no option available to add the JD during requisition creation. Could you please check if this functionality can be added?RecruitmentRequisition CreationWorks as expectedthe raise form lets the requester add or upload the job description (PDF or Word)
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-024 · the raise form lets the requester add or upload the job description (PDF or Word) tests/feedback/recruitment-requisition/form.spec.ts:14
SHR-032Issue : When creating a job requisition for a replacement position, there should be a separate field/column where the requester can enter the name of the employee who is being replaced.RecruitmentRequisition CreationWorks as expecteda replacement requisition asks for the employee being replaced
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-032 · a replacement requisition asks for the employee being replaced tests/feedback/recruitment-requisition/form.spec.ts:43
SHR-034Fix - While creating a requisition, the system shows that one required field is still pending, but it does not indicate which field is missing. It should clearly show which required field needs to be completed.RecruitmentRequisition CreationWorks as expectedsubmitting with missing fields names each missing required field
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-034 · submitting with missing fields names each missing required field tests/feedback/recruitment-requisition/form.spec.ts:53
SHR-036While raising a requisition, if the Hiring Manager selects Standard Loop and submits the requisition, the interview panel sequence is unable to edit, even when the requisition is pending approval or already approved. The interview panel sequence should be edit…
moreable only by the HR Operations and Talent Acquisition teams, as the final panel sequence is decided during the calibration call and may need to be added, removed, or changed while working on the requisition.
RecruitmentRequisition CreationWorks as expectedHR / talent acquisition can change the interview sequence while the requisition is pending and after approval
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-036 · HR / talent acquisition can change the interview sequence while the requisition is pending and after approval tests/feedback/recruitment-requisition/approval.spec.ts:358
SHR-037While creating a requisition, under "Hiring Plan" there are options for "Standard Loop" and "HR Operations Loop". When Standard Loop is selected, a predefined interview panel sequence is automatically available. This sequence should be "disabled for the Hiring…
more Manager" while raising the requisition and should be editable only by the "HR Operations and Talent Acquisition teams". The interview panel sequence is finalized only after the requisition is raised, based on the calibration call, and may require panels to be added, removed, or changed while the team works on the requisition.
RecruitmentRequisition CreationWorks as expectedthe hiring manager cannot change the interview sequence
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-037 · the hiring manager cannot change the interview sequence tests/feedback/recruitment-requisition/approval.spec.ts:367
SHR-048Please help us understand how the approval workflows for requisitions and offers are currently defined and configured, including the approval hierarchy and sequence.RecruitmentRequisition & OfferWorks as expectedthe requisition approval workflow is defined as Department Head → Management → HR Head
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-048 · the requisition approval workflow is defined as Department Head → Management → HR Head tests/feedback/recruitment-requisition/access.spec.ts:33
SHR-050In the Raise a Requisition form, remove the Pre-onboarding Checklist field, as it is not required at the requisition-raising stage.RecruitmentRequisitionWorks as expectedthe raise form has no pre-onboarding checklist field
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-050 · the raise form has no pre-onboarding checklist field tests/feedback/recruitment-requisition/form.spec.ts:82
SHR-051We were able to raise a requisition with a backdated start date, and it was still triggered for approval. Ideally, the system should not allow a requisition to be raised with a backdated start date.RecruitmentRequisitionWorks as expecteda backdated target start date is refused by the form and by the server
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-051 · a backdated target start date is refused by the form and by the server tests/feedback/recruitment-requisition/form.spec.ts:90
SHR-052In the Justification field, the system only shows the validation message “At least 8 characters are needed”. It is currently allowing special characters and numeric values, whereas the field should accept alphabetic characters only.RecruitmentRequisitionWorks as expectedthe justification accepts letters and sentence punctuation only
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-052 · the justification accepts letters and sentence punctuation only tests/feedback/recruitment-requisition/form.spec.ts:104
SHR-053Please help us understand the purpose and functionality of the Voluntary Self-Identification tabRecruitmentRequisitionWorks as expectedthe Voluntary self-identification tab explains what it is for
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-053 · the Voluntary self-identification tab explains what it is for tests/feedback/recruitment-requisition/access.spec.ts:23
SHR-054Once the requisition is approved, the Hiring Manager is not receiving the approval notification email. The Hiring Manager should receive an email notification once the requisition is approved.RecruitmentNotificationWorks as expectedthe hiring manager is notified when the requisition is approved (in-app; email is not observable on QA)
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-054 · the hiring manager is notified when the requisition is approved (in-app; email is not observable on QA) tests/feedback/recruitment-requisition/approval.spec.ts:331
SHR-055When posting an open requisition on the Careers page, the Roles Description field is currently marked as not mandatory. Ideally, this should be a mandatory field before the requisition can be posted.RecruitmentPostingWorks as expecteda post cannot be published without a role description
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-055 · a post cannot be published without a role description tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:89
SHR-056Currently, there does not appear to be an option to specify the work location where the resource is expected to work during the requisition process. It would be helpful to have a field to capture the work location details as part of the requisition. And mark t…
morehis field as mandatory.
RecruitmentRequisitionWorks as expectedwork location is a mandatory field of the requisition; a requisition cannot be submitted without a work location
As expected: 2 checks passed.
2 tests: 2 pass
tests
  • ✓ SHR-056 · work location is a mandatory field of the requisition tests/feedback/recruitment-requisition/form.spec.ts:118
  • ✓ SHR-056 · a requisition cannot be submitted without a work location tests/feedback/recruitment-requisition/routing.spec.ts:26
SHR-057Currently, the system allows us to propose a backdated date and time to the candidate. Ideally, the system should not allow backdated dates or times to be proposed.RecruitmentInterviewWorks as expectedproposing a backdated slot for a real candidate is refused; a slot in the past is refused by the server; the Schedule dialog tells the recruiter that a past slot is not allowed
As expected: 3 checks passed.
3 tests: 3 pass
tests
  • ✓ SHR-057 · proposing a backdated slot for a real candidate is refused tests/feedback/recruitment-pipeline/pipeline-journey.spec.ts:55
  • ✓ SHR-057 · a slot in the past is refused by the server tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:135
  • ✓ SHR-057 · the Schedule dialog tells the recruiter that a past slot is not allowed tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:147
SHR-058In the current system, the feedback and scorecard are mainly rating-based and are not very specific. We would like to have a set of questions that allow interviewers to provide descriptive feedback on the candidate, covering both technical skills and general p…
moreersonality/behavioral aspects.
RecruitmentFeedback form/ScorecardWorks as expectedthe scorecard has written questions on technical skills and on behaviour
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-058 · the scorecard has written questions on technical skills and on behaviour tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:241
SHR-070The Department Head should be able to view requisitions/open positions that belong to their respective department only. Currently, the Department Head is able to view requisitions across all departments. Access should be restricted so that each Department Head…
more can only view the openings raised under their own department.
RecruitmentRequisitionWorks as expecteda Department Head sees only requisitions of their own department
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-070 · a Department Head sees only requisitions of their own department tests/feedback/recruitment-requisition/access.spec.ts:8
SHR-071Once a requisition is raised, the Department Head should be able to view all the relevant requisition details, including the reason for raising the position. Currently, when the Department Head receives the requisition in the Inbox for approval, the required d…
moreetails are not visible. The Department Head has to navigate to the Recruitment tab, locate the requisition, review the details, and then approve it. The requisition details should be accessible directly from the approval request in the Inbox, so the Department Head can review the information and approve/reject the requisition without having to navigate to the Recruitment tab separately.
RecruitmentRequisitionWorks as expectedthe Inbox item shows the requisition’s details, including the reason, without leaving the Inbox
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-071 · the Inbox item shows the requisition’s details, including the reason, without leaving the Inbox tests/feedback/recruitment-requisition/approval.spec.ts:231
SHR-075We can see a field called “Application Questions” while posting a job through the application. Could you please confirm whether Recruiters can add custom screening questions in this section? If yes, will these questions be displayed to candidates while they ar…
moree applying for the position, with their responses captured for the Recruiter to review?
RecruitmentJob PostingWorks as expectedrecruiters can attach application questions to a post, and answers are kept on the application
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-075 · recruiters can attach application questions to a post, and answers are kept on the application tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:108
SHR-080Currently, the interview slots are set to a fixed duration of 1 hour. The interview duration should be customizable, allowing the Recruiter to select and propose the appropriate slot duration based on the role and interview requirements.RecruitmentInterviewWorks as expecteda 45-minute slot is booked as 45 minutes; the recruiter picks the slot length (not fixed at 1 hour)
As expected: 2 checks passed.
2 tests: 2 pass
tests
  • ✓ SHR-080 · a 45-minute slot is booked as 45 minutes tests/feedback/recruitment-pipeline/pipeline-journey.spec.ts:61
  • ✓ SHR-080 · the recruiter picks the slot length (not fixed at 1 hour) tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:169
SHR-082Interviews may need to be rescheduled due to various reasons from either the candidate’s or interviewer’s side. Currently, the system provides only a “No Show” option and does not have an option to reschedule the interview. A “Reschedule” option should be avai…
morelable so that the Recruiter can select a new date and time and send the updated interview invitation to the candidate and interviewer.
RecruitmentInterviewWorks as expecteda scheduled interview can be rescheduled to a new date and time
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-082 · a scheduled interview can be rescheduled to a new date and time tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:204
SHR-083While drafting an offer, we entered the candidate’s CTC and Date of Joining (DOJ). However, when attempting to submit the offer, the system throws an error and does not allow us to proceed.RecruitmentOfferWorks as expectedan offer with CTC and date of joining is drafted and submitted for approval; an offer with CTC and date of joining passes validation
As expected: 2 checks passed.
2 tests: 2 pass
tests
  • ✓ SHR-083 · an offer with CTC and date of joining is drafted and submitted for approval tests/feedback/recruitment-offer/offer-journey.spec.ts:50
  • ✓ SHR-083 · an offer with CTC and date of joining passes validation tests/feedback/recruitment-offer/offer-pr.spec.ts:64
SHR-098Work Location dropdown is empty when creating a requisition using the Test Hiring Manager and Test Department Head logins, whereas locations are visible for the Recruiter and HR Head logins.RecruitmentRequisitionWorks as expectedthe work location dropdown lists the company’s locations for the hiring manager; the work location dropdown lists the company’s locations for the department head
As expected: 2 checks passed.
2 tests: 2 pass
tests
  • ✓ SHR-098 · the work location dropdown lists the company’s locations for the hiring manager tests/feedback/recruitment-requisition/form.spec.ts:129
  • ✓ SHR-098 · the work location dropdown lists the company’s locations for the department head tests/feedback/recruitment-requisition/form.spec.ts:129
SHR-099After the Department Head requests changes to a requisition, the Manager receives a notification to make the changes. However, when the Manager edits the requisition and attempts to save it, the system throws an error.RecruitmentRequisitionWorks as expectedthe hiring manager can edit a sent-back requisition and save it
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-099 · the hiring manager can edit a sent-back requisition and save it tests/feedback/recruitment-requisition/approval.spec.ts:278
SHR-101After the requisition is approved by the Department Head, the HR Head is required to complete fields such as Band, Salary, Interview Sequence, and Job Description in Company Format. However, these details are already captured during the initial requisition pro…
morecess or handled separately. Remove the fields from the HR Head's approval stage and retain only the options to review the requisition, approve, reject, or request changes.
RecruitmentRequisitionWorks as expectedthe HR Head approval step asks for no extra fields, only review and approve / decline / request changes
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-101 · the HR Head approval step asks for no extra fields, only review and approve / decline / request changes tests/feedback/recruitment-requisition/approval.spec.ts:241
SHR-103Once an interview is scheduled, only the Reschedule option is available. Please add Cancel Interview and No-Show options, allowing users to record the appropriate reason when cancelling an interview or marking a candidate as a no-showRecruitmentInterviewWorks as expectedCancel interview and No-show each record a required reason
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-103 · Cancel interview and No-show each record a required reason tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts:222
SHR-001Add Quick Approvals so approvers can act on pending requests directly without opening each one.Workflow EngineQuick ApprovalsWorks as expectedapprovers can approve or decline straight from the list, without opening the request
As expected: 1 check passed.
1 test: 1 pass
tests
  • ✓ SHR-001 · approvers can approve or decline straight from the list, without opening the request tests/feedback/general/general.spec.ts:42

Test coverage by module

ModuleSubmoduleTestsPassedFailedNot runIssues covered
AttendanceAttendance1914508
AttendanceAttendance details report/LOP report30302
AttendanceOT & Compoff11001
AttendanceRegularisation33001
DocumentsJoining documents10011
Employee LifecycleBulk Upload11001
Employee LifecycleConfirmation30301
Employee LifecycleEmployee Creation73406
Employee LifecycleEmployee Search31201
Employee LifecycleExit62402
Employee LifecycleLogin11001
Employee LifecycleNew Employee Creation116506
Employee LifecycleOffboarding40401
Employee LifecycleOnboarding53203
Employee LifecyclePosition Creation11001
Employee LifecyclePre-boarding21101
Employee LifecycleRole Creation20201
General / OtherEmail notification10011
General / OtherHome page> pending approvals10101
LeaveApply Leave65102
LeaveAttendance10101
LeaveLeave31202
LeaveLeave Balance52302
LeaveLeave configuration81703
Leaveleave deposit31201
LeaveLeave Display21101
LeaveLong leave approval matrix42201
Leaverequest for Comp off21101
Leave and Attendanceleave calculation73402
OnboardingPreboarding11001
OrganizationLocation Creation22001
OrganizationLocations20201
OrganizationNew EMployee30302
OrganizationNew Employee Creation22001
OrganizationOrganisations->Employees41301
OrientationSchedule a Session32012
Policies & AnnouncementsHome -> Celebrations31111
Policies & AnnouncementsTo read10101
Recruitmentcandidate submission10011
RecruitmentFeedback form/Scorecard11001
RecruitmentInterview1510509
RecruitmentInterview feedback20201
RecruitmentJob Posting21102
RecruitmentNotification11001
RecruitmentNotifications21011
RecruitmentOffer43102
RecruitmentOffer Approval41302
RecruitmentOffer Release notification10101
RecruitmentParse10011
RecruitmentPosting11001
RecruitmentRequisition341816023
RecruitmentRequisition & Offer11001
RecruitmentRequisition Creation66006
RecruitmentTalent Pool10101
Workflow EngineQuick Approvals11001
Total2151081007122