PRACTICE FIXTURE — intentionally built for automation practice
1. Simple static employee table
A stable semantic baseline exposes every required employee column before interactive behavior is added.
| Employee ID | Name | Department | Location | Role | Salary ₹ | Status | Joining Date |
|---|---|---|---|---|---|---|---|
| emp-001 | Rahul Sharma | Engineering | Bengaluru | QA Analyst | ₹52,900 | Inactive | 2018-02-02 |
| emp-002 | Rahul Iyer | Quality Assurance | Mumbai | QA Analyst | ₹60,800 | Active | 2019-03-03 |
| emp-003 | Rahul Patel | Product | Delhi | Engineer | ₹68,700 | Active | 2020-04-04 |
| emp-004 | Rahul Mukherjee | Design | Pune | QA Analyst | ₹76,700 | Active | 2021-05-05 |
| emp-005 | Rahul Fernandes | Finance | Hyderabad | QA Analyst | ₹84,600 | Active | 2022-06-06 |
2. Multi-column sortable table
Each header cycles ascending, descending, and unsorted while preserving other sort keys and exposing aria-sort plus a visible priority.
3. Instant and debounced table search
Instant search updates on every keystroke. Debounced search applies only after a visible 350 ms quiet period.
Search is ready.
| ID | Name | Department | Location |
|---|
4. Combined filters and no-results state
Department, location, and status filters combine predictably and render an explicit empty state.
All employees shown.
| Name | Department | Location | Status | Salary ₹ |
|---|
5. Client-side and server-side pagination
Compare slicing an already-loaded collection with page/limit requests whose status reports the exact visible range.
Client-side pagination
| ID | Name | Department |
|---|
Server-side API pagination
| ID | Name | Department |
|---|
6. Inline editing with sandbox persistence
Edit Role in place, validate it, save through PATCH, cancel without mutation, reload to prove persistence, or reset to seed.
Choose an employee to edit.
| ID | Name | Department | Role | Action |
|---|
7–9. Dynamic, selectable, and expandable rows
Add/delete updates a count, selection distinguishes one page from every page, bulk action changes status, and details expand beside the owning row.
Dynamic rows
| ID | Name | Action |
|---|
Selectable rows and bulk action
0 employees selected.
| Select | Name | Status |
|---|
Expandable row details
| Name | Department | Details |
|---|
10. Sticky header, first column, and horizontal scroll
A constrained viewport keeps context visible while both axes move across the wide table.
| Employee ID | Name | Department | Location | Role | Salary ₹ | Status | Joining Date |
|---|
11. Virtualized 10,000-row table
The viewport calculates deterministic records but mounts only a small visible window, including buffer rows.
Preparing 10,000 deterministic rows.
12. Deterministic asynchronous row update
A bounded delay changes one row from Updating to Active and announces both states through a live region.
Employee emp-009 is Pending.
| ID | Name | Status |
|---|---|---|
| emp-009 | Ishaan Khan | Pending |
13. Customer API table
Refresh the current sandbox’s customer records after API setup, then verify created data through the UI.
| ID | Name | City | Tier | |
|---|---|---|---|---|
| Select Refresh customer table. | ||||
14. Nested business tables
Customer orders expose line items, while departments expose employees and projects without losing the parent context.
Customer → Orders → Order Items
| Customer | City | Orders | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Ananya Rao | Pune | View 2 orders
| |||||||||||||||
| Priya Iyer | Bengaluru | 1 order |
Department → Employees → Projects
| Department | Employees | ||||||
|---|---|---|---|---|---|---|---|
| Engineering | View employees
| ||||||
| Quality Assurance | 18 employees |