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
| Issue | Description | Module | Submodule | Status | Expected result | Actual result | Total test coverage |
|---|---|---|---|---|---|---|---|
| SHR-008 | The 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 captured | Attendance | Attendance | Open — 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 errorSHR-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 passtests
|
| SHR-014 | Issue: 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 | Attendance | Attendance | Open — 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 & screenshotsSHR-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", + ] | 2 tests: 1 fail · 1 passtests
|
| SHR-069 | Floating 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) | Attendance | Attendance | Open — confirmed | Floating 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: 156full errorSHR-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 failtests
|
| SHR-123 | Attendance 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 attendance | Attendance | Attendance details report/LOP report | Open — confirmed | Attendance 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 & screenshotsSHR-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 [] | 2 tests: 2 failtests
|
| SHR-124 | Leave report with employee details and Leave type and the format is shared in the screenshots Tab | Attendance | Attendance details report/LOP report | Open — confirmed | Leave 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 & screenshotsSHR-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 | 1 test: 1 failtests
|
| SHR-004 | Pre-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 employees | Employee Lifecycle | New Employee Creation | Open — confirmed | an 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 errorSHR-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 failtests
|
| SHR-005 | Employees 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 page | Employee Lifecycle | New Employee Creation | Open — confirmed | Onboarding 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 errorSHR-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 failtests
|
| SHR-006 | I 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 up | Employee Lifecycle | New Employee Creation | Open — 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 errorSHR-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 passtests
|
| SHR-007 | The onboarding activities for the test employees have not yet been completed, but the system is already showing the onboarding status as “Complete.” | Employee Lifecycle | New Employee Creation | Open — confirmed | New 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 & screenshotsSHR-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" | 1 test: 1 failtests
|
| SHR-009 | Error has occured as soon as we click on the employee searched on global search box on homepage | Employee Lifecycle | Employee Search | Open — 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: 403full error & screenshotsSHR-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 | 3 tests: 2 fail · 1 passtests
|
| SHR-013 | IT Checklist not getting triggered for today's new joiners | Employee Lifecycle | Onboarding | Open — 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 errorSHR-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 passtests
|
| SHR-033 | Vinay 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 Lifecycle | Pre-boarding | Open — 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 & screenshotsSHR-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 | 2 tests: 1 fail · 1 passtests
|
| SHR-039 | Clarification 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 Lifecycle | Role Creation | Open — confirmed | an 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… morelementfull error & screenshotsSHR-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" | 2 tests: 2 failtests
|
| SHR-061 | 1. 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 Lifecycle | Exit | Open — 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… moreof 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 & screenshotsSHR-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" | 5 tests: 4 fail · 1 passtests
|
| SHR-063 | Where does the new joinee enter their details after Onboarding? | Employee Lifecycle | Onboarding | Open — confirmed | Once 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 & screenshotsSHR-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." | 1 test: 1 failtests
|
| SHR-090 | Probation 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 Lifecycle | Confirmation | Open — confirmed | Probation 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 & screenshotsSHR-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" | 3 tests: 3 failtests
|
| SHR-096 | Unable 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 Lifecycle | Offboarding | Open — confirmed | changing 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 Initiationfull error & screenshotsSHR-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" | 4 tests: 4 failtests
|
| SHR-105 | Phone Number Extension dropdown only has India and US | Employee Lifecycle | Employee Creation | Open — confirmed | Add 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 | 1 test: 1 failtests
|
| SHR-107 | Employee phone number in US Extension and Emergency Contact is in India Extension | Employee Lifecycle | Employee Creation | Open — confirmed | If 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 & screenshotsSHR-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 | 1 test: 1 failtests
|
| SHR-108 | California is in jurisdictions but a corresponding option doesn't exist in locations. | Employee Lifecycle | Employee Creation | Open — confirmed | Jurisdiction 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 & screenshotsSHR-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", + ] | 2 tests: 2 failtests
|
| SHR-010 | Pending 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 / Other | Home page> pending approvals | Open — confirmed | Home “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 & screenshotsSHR-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" | 1 test: 1 failtests
|
| SHR-016 | Issue: 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 | Leave | Leave | Open — 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 & screenshotsSHR-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 | 2 tests: 1 fail · 1 passtests
|
| SHR-018 | Leave types should be displayed correctly. Kavya is a female, and hence paternity leave should not be displayed for her | Leave | Leave Balance | Open — 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 errorSHR-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 passtests
|
| SHR-019 | An 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 | Leave | Leave Balance | Open — 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: 10full errorSHR-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: undefinedSHR-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 passtests
|
| SHR-020 | I 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" | Leave | Apply Leave | Open — 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 & screenshotsSHR-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) | 4 tests: 1 fail · 3 passtests
|
| SHR-068 | Leave cancellation requests auto approved and not being triggered to reporting manager for approval | Leave | Attendance | Open — confirmed | Leave 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 & screenshotsSHR-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\")" | 1 test: 1 failtests
|
| SHR-085 | FH 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. | Leave | leave deposit | Open — 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 errorSHR-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 passtests
|
| SHR-086 | There is no option to request for Comp off | Leave | request for Comp off | Open — 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 errorSHR-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 passtests
|
| SHR-087 | Leave 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. | Leave | Long leave approval matrix | Open — 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 errorSHR-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 passtests
|
| SHR-091 | Leave 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. | Leave | Leave configuration | Open — 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 & screenshotsSHR-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: 201SHR-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,
} | 3 tests: 2 fail · 1 passtests
|
| SHR-092 | Compensatory 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 | Leave | Leave configuration | Open — confirmed | comp-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 errorSHR-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: 201SHR-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 failtests
|
| SHR-093 | Leave 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 Half | Leave | Leave configuration | Open — confirmed | a 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 & screenshotsSHR-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" | 3 tests: 3 failtests
|
| SHR-094 | Issue: 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. | Leave | Leave | Open — confirmed | a 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 & screenshotsSHR-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 | 1 test: 1 failtests
|
| SHR-122 | Any 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… moresee are PTOs & Floating Holidays and Service Leaves (if eligible) | Leave | Leave Display | Open — 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 & screenshotsSHR-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", + ] | 2 tests: 1 fail · 1 passtests
|
| SHR-046 | Maternity leave calculation is excluding holidays currently however only for this particular leave type calculation should be 182 days from the date of leave | Leave and Attendance | leave calculation | Open — 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 foundfull error & screenshotsSHR-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$/) | 4 tests: 2 fail · 2 passtests
|
| SHR-047 | Mat leave configuration and approval workflow is pending | Leave and Attendance | leave calculation | Open — 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 errorSHR-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 passtests
|
| SHR-084 | This location is named California but the address is that of Bangalore. | Organization | Locations | Open — confirmed | no 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: 201full errorSHR-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 failtests
|
| SHR-088 | Jurisdiction and Location aren't mapped | Organization | New EMployee | Open — confirmed | Jurisdiction 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 & screenshotsSHR-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 | 1 test: 1 failtests
|
| SHR-089 | Employee Name and Personal Email ID is being accepted under Emergency Contact Name and Official Email IDs respectively | Organization | New EMployee | Open — confirmed | Employee 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: falsefull error & screenshotsSHR-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 | 2 tests: 2 failtests
|
| SHR-119 | Need filter option for Hired date/date of joining and the entity name in the Organisation ->Employee tab | Organization | Organisations->Employees | Open — 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: 0full error & screenshotsSHR-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 | 4 tests: 3 fail · 1 passtests
|
| SHR-109 | Exit is showing up in Announcements | Policies & Announcements | To read | Open — confirmed | When 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 & screenshotsSHR-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)", + ] | 1 test: 1 failtests
|
| SHR-118 | Celebrations is not showing Service anniversary and Birthday wishes | Policies & Announcements | Home -> Celebrations | Open — 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 & screenshotsSHR-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." | 3 tests: 1 fail · 1 pass · 1 not runtests
|
| SHR-025 | When 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] | Recruitment | Offer Release notification | Open — confirmed | the "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 errorSHR-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 failtests
|
| SHR-049 | When 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… moreshowing all employees. | Recruitment | Requisition | Open — 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 errorSHR-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 passtests
|
| SHR-059 | Once 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. | Recruitment | Offer Approval | Open — 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 errorSHR-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 passtests
|
| SHR-060 | The 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. | Recruitment | Offer Approval | Open — confirmed | the 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 & screenshotsSHR-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" | 2 tests: 2 failtests
|
| SHR-072 | When 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… morelogin, 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. | Recruitment | Requisition | Open — 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: 2full error & screenshotsSHR-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 | 3 tests: 2 fail · 1 passtests
|
| SHR-073 | Once 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. | Recruitment | Requisition | Open — 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: falsefull errorSHR-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 passtests
|
| SHR-074 | Once 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… morereviewing 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. | Recruitment | Requisition | Open — 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 & screenshotsSHR-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"] | 2 tests: 1 fail · 1 passtests
|
| SHR-076 | Please 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. | Recruitment | Job Posting | Open — confirmed | recruitment 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 & screenshotsSHR-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" | 1 test: 1 failtests
|
| SHR-078 | When 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. | Recruitment | Interview | Open — confirmed | the 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… moreidentity 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 errorSHR-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 failtests
|
| SHR-079 | Currently, 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. | Recruitment | Interview | Open — confirmed | the 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: falsefull error & screenshotsSHR-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 | 2 tests: 2 failtests
|
| SHR-081 | The 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. | Recruitment | Interview | Open — 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 & screenshotsSHR-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() | 2 tests: 1 fail · 1 passtests
|
| SHR-097 | Currently, 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. | Recruitment | Interview | Open — 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 & screenshotsSHR-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() | 2 tests: 1 fail · 1 passtests
|
| SHR-100 | Clarification 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 Head | Recruitment | Requisition | Open — 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 & screenshotsSHR-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." | 2 tests: 1 fail · 1 passtests
|
| SHR-104 | When 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 workflow | Recruitment | Requisition | Open — confirmed | a 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 errorSHR-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 failtests
|
| SHR-110 | Currently, 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. | Recruitment | Talent Pool | Open — confirmed | a 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 & screenshotsSHR-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?/) | 1 test: 1 failtests
|
| SHR-111 | The 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. | Recruitment | Requisition | Open — confirmed | an 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 & screenshotsSHR-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" | 1 test: 1 failtests
|
| SHR-112 | The system should prevent scheduling the next interview round until the previous interviewer has submitted their feedback. | Recruitment | Requisition | Open — confirmed | the 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 errorSHR-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 failtests
|
| SHR-113 | The system should automatically send an email reminder to the respective interviewer if interview feedback is not submitted within 24 hours of the interview. | Recruitment | Requisition | Open — 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 errorSHR-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 passtests
|
| SHR-114 | A 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. | Recruitment | Requisition | Open — confirmed | a candidate can be transferred to another role without starting over | TimeoutError: locator.waitFor: Timeout 90000ms exceeded. | 1 test: 1 failtests
|
| SHR-115 | After 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. | Recruitment | Requisition | Open — confirmed | parsed 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 & screenshotsSHR-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", + ] | 1 test: 1 failtests
|
| SHR-116 | When 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. | Recruitment | Requisition | Open — confirmed | after 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 & screenshotsSHR-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", ] | 1 test: 1 failtests
|
| SHR-117 | When 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. | Recruitment | Requisition | Open — confirmed | reducing 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: truefull error & screenshotsSHR-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: falseSHR-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 | 2 tests: 2 failtests
|
| SHR-120 | Once 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, | Recruitment | Offer | Open — 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 errorSHR-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 passtests
|
| SHR-126 | The 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. | Recruitment | Interview feedback | Open — confirmed | the 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 & screenshotsSHR-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", "", …] | 2 tests: 2 failtests
|
| SHR-042 | Candidate form doesnt have submit option or an acknowledgment that the documents are submitted | Documents | Joining documents | Not verified this run | Need 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 runtests
|
| SHR-125 | Received 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 / Other | Email notification | Not verified this run | the 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 runtests
|
| SHR-044 | Time input fields are missing. No notifications triggered. | Orientation | Schedule a Session | Partly verified — 1 of 2 checks not run | Attendees 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 runtests
|
| SHR-022 | Acknowledgement email sent to the candidate confirming that we have received their application states " Hi Name: [ followed by candidate's name] | Recruitment | Notifications | Partly verified — 1 of 2 checks not run | Expected 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 runtests
|
| SHR-077 | The 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. | Recruitment | candidate submission | Not verified this run | a 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 runtests
|
| SHR-102 | The Parse option is not working correctly, as it is extracting the heading instead of the candidate's name. | Recruitment | Parse | Not verified this run | the 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 runtests
|
| SHR-015 | Issue: 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 | Attendance | Attendance | Works as expected | The 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 passtests
|
| SHR-040 | through employee self service mode I was able to apply for regularization for 2nd october which is a holiday | Attendance | Regularisation | Works as expected | it should not accept regularization on holidays | As expected: 3 checks passed. | 3 tests: 3 passtests
|
| SHR-041 | Through 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 compoff | Attendance | OT & Compoff | Works as expected | the employee button reads "Claim comp-off", not "Claim OT" | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-064 | Once 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 accessible | Attendance | Attendance | Works as expected | we need an option to clock in again to capture the actual working hours | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-065 | Unable to upload the shift roster | Attendance | Attendance | Works as expected | There is no option to download the shift roater | As expected: 3 checks passed. | 3 tests: 3 passtests
|
| SHR-066 | There is no option to downlaod attendance report | Attendance | Attendance | Works as expected | There is no option to downlaod attendance report | As expected: 3 checks passed. | 3 tests: 3 passtests
|
| SHR-067 | There is no option to download leave reports | Attendance | Attendance | Works as expected | There is no option to download leave reports | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-002 | 1. 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 cycle | Employee Lifecycle | New Employee Creation | Works as expected | Names 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 passtests
|
| SHR-003 | Employee 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 Lifecycle | New Employee Creation | Works as expected | Position 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 passtests
|
| SHR-011 | Unable to login using pre-existing employees as well | Employee Lifecycle | Login | Works as expected | pre-existing employees can sign in and use the app | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-012 | Issue: 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 Lifecycle | Onboarding | Works as expected | Expected 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 passtests
|
| SHR-029 | Query: 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 Lifecycle | Employee Creation | Works as expected | each employee class explains which roles belong in it | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-031 | Issue: 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 Lifecycle | Employee Creation | Works as expected | an invitation to set a password is recorded, confirmed and can be re-sent | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-035 | Issue: 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 Lifecycle | Position Creation | Works as expected | "Position code is already in use" goes away by itself | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-038 | Observation: 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 Lifecycle | Bulk Upload | Works as expected | the import recognises positions that already exist (preview only, nothing imported) | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-062 | Currently, 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 Lifecycle | Exit | Works as expected | an employee can submit their own resignation in the system | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-106 | Although phone number has been provided in the recommended length, it is throwing an error | Employee Lifecycle | Employee Creation | Works as expected | Please investigate this error | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-021 | for 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 found | Leave | Apply Leave | Works as expected | Expected 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 passtests
|
| SHR-043 | Agenda 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 agenda | Onboarding | Preboarding | Works as expected | Make 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 passtests
|
| SHR-026 | Issues 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. | Organization | New Employee Creation | Works as expected | a 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 passtests
|
| SHR-028 | Observation: 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. | Organization | Location Creation | Works as expected | Kind "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 passtests
|
| SHR-045 | Attendees list isn't sought at the time of scheduling a session. I have to schedule a meeting and then add attendees through manage attendees. | Orientation | Schedule a Session | Works as expected | Add 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 passtests
|
| SHR-017 | Issue: 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. | Recruitment | Requisition Creation | Works as expected | the approver gets the requisition in their Inbox to act on | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-023 | We 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. | Recruitment | Interview | Works as expected | with both scorecards in, the candidate moves to the next stage | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-024 | Enhancement: 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? | Recruitment | Requisition Creation | Works as expected | the raise form lets the requester add or upload the job description (PDF or Word) | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-032 | Issue : 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. | Recruitment | Requisition Creation | Works as expected | a replacement requisition asks for the employee being replaced | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-034 | Fix - 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. | Recruitment | Requisition Creation | Works as expected | submitting with missing fields names each missing required field | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-036 | While 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. | Recruitment | Requisition Creation | Works as expected | HR / talent acquisition can change the interview sequence while the requisition is pending and after approval | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-037 | While 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… moreManager" 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. | Recruitment | Requisition Creation | Works as expected | the hiring manager cannot change the interview sequence | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-048 | Please help us understand how the approval workflows for requisitions and offers are currently defined and configured, including the approval hierarchy and sequence. | Recruitment | Requisition & Offer | Works as expected | the requisition approval workflow is defined as Department Head → Management → HR Head | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-050 | In the Raise a Requisition form, remove the Pre-onboarding Checklist field, as it is not required at the requisition-raising stage. | Recruitment | Requisition | Works as expected | the raise form has no pre-onboarding checklist field | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-051 | We 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. | Recruitment | Requisition | Works as expected | a backdated target start date is refused by the form and by the server | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-052 | In 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. | Recruitment | Requisition | Works as expected | the justification accepts letters and sentence punctuation only | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-053 | Please help us understand the purpose and functionality of the Voluntary Self-Identification tab | Recruitment | Requisition | Works as expected | the Voluntary self-identification tab explains what it is for | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-054 | Once 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. | Recruitment | Notification | Works as expected | the 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 passtests
|
| SHR-055 | When 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. | Recruitment | Posting | Works as expected | a post cannot be published without a role description | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-056 | Currently, 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. | Recruitment | Requisition | Works as expected | work 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 passtests
|
| SHR-057 | Currently, 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. | Recruitment | Interview | Works as expected | proposing 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 passtests
|
| SHR-058 | In 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. | Recruitment | Feedback form/Scorecard | Works as expected | the scorecard has written questions on technical skills and on behaviour | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-070 | The 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… morecan only view the openings raised under their own department. | Recruitment | Requisition | Works as expected | a Department Head sees only requisitions of their own department | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-071 | Once 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. | Recruitment | Requisition | Works as expected | the Inbox item shows the requisition’s details, including the reason, without leaving the Inbox | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-075 | We 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? | Recruitment | Job Posting | Works as expected | recruiters can attach application questions to a post, and answers are kept on the application | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-080 | Currently, 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. | Recruitment | Interview | Works as expected | a 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 passtests
|
| SHR-082 | Interviews 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. | Recruitment | Interview | Works as expected | a scheduled interview can be rescheduled to a new date and time | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-083 | While 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. | Recruitment | Offer | Works as expected | an 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 passtests
|
| SHR-098 | Work 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. | Recruitment | Requisition | Works as expected | the 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 passtests
|
| SHR-099 | After 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. | Recruitment | Requisition | Works as expected | the hiring manager can edit a sent-back requisition and save it | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-101 | After 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. | Recruitment | Requisition | Works as expected | the HR Head approval step asks for no extra fields, only review and approve / decline / request changes | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-103 | Once 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-show | Recruitment | Interview | Works as expected | Cancel interview and No-show each record a required reason | As expected: 1 check passed. | 1 test: 1 passtests
|
| SHR-001 | Add Quick Approvals so approvers can act on pending requests directly without opening each one. | Workflow Engine | Quick Approvals | Works as expected | approvers can approve or decline straight from the list, without opening the request | As expected: 1 check passed. | 1 test: 1 passtests
|
Test coverage by module
| Module | Submodule | Tests | Passed | Failed | Not run | Issues covered |
|---|---|---|---|---|---|---|
| Attendance | Attendance | 19 | 14 | 5 | 0 | 8 |
| Attendance | Attendance details report/LOP report | 3 | 0 | 3 | 0 | 2 |
| Attendance | OT & Compoff | 1 | 1 | 0 | 0 | 1 |
| Attendance | Regularisation | 3 | 3 | 0 | 0 | 1 |
| Documents | Joining documents | 1 | 0 | 0 | 1 | 1 |
| Employee Lifecycle | Bulk Upload | 1 | 1 | 0 | 0 | 1 |
| Employee Lifecycle | Confirmation | 3 | 0 | 3 | 0 | 1 |
| Employee Lifecycle | Employee Creation | 7 | 3 | 4 | 0 | 6 |
| Employee Lifecycle | Employee Search | 3 | 1 | 2 | 0 | 1 |
| Employee Lifecycle | Exit | 6 | 2 | 4 | 0 | 2 |
| Employee Lifecycle | Login | 1 | 1 | 0 | 0 | 1 |
| Employee Lifecycle | New Employee Creation | 11 | 6 | 5 | 0 | 6 |
| Employee Lifecycle | Offboarding | 4 | 0 | 4 | 0 | 1 |
| Employee Lifecycle | Onboarding | 5 | 3 | 2 | 0 | 3 |
| Employee Lifecycle | Position Creation | 1 | 1 | 0 | 0 | 1 |
| Employee Lifecycle | Pre-boarding | 2 | 1 | 1 | 0 | 1 |
| Employee Lifecycle | Role Creation | 2 | 0 | 2 | 0 | 1 |
| General / Other | Email notification | 1 | 0 | 0 | 1 | 1 |
| General / Other | Home page> pending approvals | 1 | 0 | 1 | 0 | 1 |
| Leave | Apply Leave | 6 | 5 | 1 | 0 | 2 |
| Leave | Attendance | 1 | 0 | 1 | 0 | 1 |
| Leave | Leave | 3 | 1 | 2 | 0 | 2 |
| Leave | Leave Balance | 5 | 2 | 3 | 0 | 2 |
| Leave | Leave configuration | 8 | 1 | 7 | 0 | 3 |
| Leave | leave deposit | 3 | 1 | 2 | 0 | 1 |
| Leave | Leave Display | 2 | 1 | 1 | 0 | 1 |
| Leave | Long leave approval matrix | 4 | 2 | 2 | 0 | 1 |
| Leave | request for Comp off | 2 | 1 | 1 | 0 | 1 |
| Leave and Attendance | leave calculation | 7 | 3 | 4 | 0 | 2 |
| Onboarding | Preboarding | 1 | 1 | 0 | 0 | 1 |
| Organization | Location Creation | 2 | 2 | 0 | 0 | 1 |
| Organization | Locations | 2 | 0 | 2 | 0 | 1 |
| Organization | New EMployee | 3 | 0 | 3 | 0 | 2 |
| Organization | New Employee Creation | 2 | 2 | 0 | 0 | 1 |
| Organization | Organisations->Employees | 4 | 1 | 3 | 0 | 1 |
| Orientation | Schedule a Session | 3 | 2 | 0 | 1 | 2 |
| Policies & Announcements | Home -> Celebrations | 3 | 1 | 1 | 1 | 1 |
| Policies & Announcements | To read | 1 | 0 | 1 | 0 | 1 |
| Recruitment | candidate submission | 1 | 0 | 0 | 1 | 1 |
| Recruitment | Feedback form/Scorecard | 1 | 1 | 0 | 0 | 1 |
| Recruitment | Interview | 15 | 10 | 5 | 0 | 9 |
| Recruitment | Interview feedback | 2 | 0 | 2 | 0 | 1 |
| Recruitment | Job Posting | 2 | 1 | 1 | 0 | 2 |
| Recruitment | Notification | 1 | 1 | 0 | 0 | 1 |
| Recruitment | Notifications | 2 | 1 | 0 | 1 | 1 |
| Recruitment | Offer | 4 | 3 | 1 | 0 | 2 |
| Recruitment | Offer Approval | 4 | 1 | 3 | 0 | 2 |
| Recruitment | Offer Release notification | 1 | 0 | 1 | 0 | 1 |
| Recruitment | Parse | 1 | 0 | 0 | 1 | 1 |
| Recruitment | Posting | 1 | 1 | 0 | 0 | 1 |
| Recruitment | Requisition | 34 | 18 | 16 | 0 | 23 |
| Recruitment | Requisition & Offer | 1 | 1 | 0 | 0 | 1 |
| Recruitment | Requisition Creation | 6 | 6 | 0 | 0 | 6 |
| Recruitment | Talent Pool | 1 | 0 | 1 | 0 | 1 |
| Workflow Engine | Quick Approvals | 1 | 1 | 0 | 0 | 1 |
| Total | 215 | 108 | 100 | 7 | 122 |





















































