Index — Test Case Summary (QA Pack #1: Ordering)

Legend: P1 = highest risk / core reliability, P2 = secondary risk / edge cases

TC Priority Area What it validates Result Evidence
TC-00 P1 DB Setup Board + List IDs captured; list positions valid PASS TC-00-UI.mp4, TC-00-Q1.png, TC-00-Q2.png, TC-00-Q7.png, TC-00-Q9.png
TC-01 P1 Ticket reorder Bottom → top reorder works + DB matches PASS TC-01-UI.mp4, TC-01-Q4.png, TC-01-Q11.png, TC-01-Q5.png
TC-02 P1 Ticket reorder Top → bottom reorder works + DB matches PASS TC-02-UI.mp4, TC-02-Q4.png, TC-02-Q5.png
TC-03 P1 Ticket reorder Adjacent swap works + DB matches PASS TC-03-UI.mp4, TC-03-Q4.png, TC-03-Q5.png
TC-04 P1 Ticket reorder Middle insertion shifts positions cleanly (no gaps/dupes) PASS TC-04-UI.mp4, TC-04-Q4.png, TC-04-Q12.png, TC-04-Q5.png
TC-05 P1 Ticket move lists Todo → Doing (top), source/target resequenced correctly PASS TC-05-UI.mp4, TC-05-Q11.png, TC-05-Q4-for-todo.png, TC-05-Q4-for-doing.png, TC-05-Q5.png
TC-06 P1 Ticket move lists Doing → Done into empty list behaves correctly PASS TC-06-UI.mp4, TC-06-Q11.png, TC-06-Q4.png, TC-06-Q10.png, TC-06-Q5.png
TC-07 P1 Ticket move lists Insert into middle of target list preserves order PASS TC-07-UI.mp4, TC-07-Q11.png, TC-07-Q4.png, TC-07-Q5.png
TC-08 P1 Ticket move lists Move same ticket back/forth doesn’t duplicate or corrupt PASS TC-08-UI.mp4, TC-08-Q11.png, TC-08-Q5.png
TC-09 P1 Ticket move lists Move last ticket out → list becomes empty cleanly PASS TC-09-UI.mp4, TC-09-Q4.png, TC-09-Q10.png, TC-09-Q5.png
TC-10 P1 Persistence Ticket reorder persists after refresh (DB before/after) PASS TC-10-UI.mp4, TC-10-Q4-before-refresh.png, TC-10-Q4-after-refresh.png
TC-11 P1 Persistence Cross-list move persists after refresh PASS TC-11-UI.mp4, TC-11-Q11-before-refresh.png, TC-11-Q11-after-refresh.png
TC-12 P1 Persistence Board state persists after logout/login PASS TC-12-UI.mp4, TC-12-Q6-before-logout.png, TC-12-Q6-after-login.png
TC-13 P1 Persistence State persists after navigating away/back PASS TC-13-UI.mp4, TC-13-Q11.png
TC-14 P1 List reorder Lists reorder left/right + DB order valid PASS TC-14-UI.mp4, TC-14-Q2.png, TC-14-Q7.png, TC-14-Q9.png
TC-15 P1 List reorder + refresh List reorder persists after refresh (limitation noted) PASS TC-15-UI.mp4, TC-15-Q2-before-refresh.png, TC-15-Q2-after-refresh.png
TC-16 P1 Regression Ticket drag/drop still works after list reorder PASS TC-16-UI.mp4, TC-16-Q11.png, TC-16-Q5.png
TC-17 P1 Negative / stress Rapid same-list dragging doesn’t create gaps/dupes/invalids PASS TC-17-UI.mp4, TC-17-Q4.png, TC-17-Q5.png, TC-17-Q8.png, TC-17-Q12.png
TC-18 P1 Negative / stress Rapid cross-list moves remain stable after refresh PASS TC-18-UI.mp4, TC-18-Q11.png
TC-19 P2 Multi-tab conflict Two tabs conflicting reorders should preserve one intent (fails) FAIL TC-19-UI.mp4, TC-19-Q4.png, TC-19-Q5.png
TC-20 P2 Negative / invalid drop Invalid drop zones don’t change DB state PASS TC-20-UI.mp4, TC-20-Q11.png

Key finding: TC-19 failed — multi-tab conflicting reorders converge to a fallback ordering that preserves data integrity but discards user reorder intent.

Ticketer — QA Pack #1: Ordering System Reliability

Test Cases + DB Verification Evidence (Executed)

Test Data Setup (Baseline)

Create a dedicated board in the staging environment:

Create tickets in each list:

Evidence & File Naming Conventions

Each test case includes:

DB evidence screenshots use:

Execution Notes

Click to read

Evidence approach used

  • Where a pre-action DB snapshot is not present, the intended pre-state is demonstrated via UI recording, and the persistent post-state is verified via DB queries.
  • Pre-action DB snapshots were captured for higher-risk persistence checks (refresh/logout). For lower-risk navigation checks, UI evidence was used for pre-state confirmation and DB evidence for post-state confirmation.

Limitation: This approach does not fully rule out a pre-existing UI/DB mismatch prior to the disruptive action. For higher assurance, a pre-action DB snapshot should be captured for every test case in future QA packs.

Baseline reset between test cases

Each test case begins from a known baseline board state. After completing a test, the board was manually reset before running the next case by reshuffling the tickets and lists to their default states. Where a test requires a different precondition, the required setup is performed and captured in evidence.

Note: This reset method is manual and may introduce setup mistakes (e.g., tickets added to the wrong list, missing tickets, incorrect ordering). Therefore, each test includes a pre-check to confirm the baseline state before executing steps; if the baseline does not match, the test must be marked Blocked until corrected. 

All tests are recorded end-to-end so setup and outcomes can be independently re-verified. A future improvement is to replace manual seeding with an automated reset/seed mechanism (e.g., script).

Pre-Setup / One-Time DB Identifiers

TC-00 — Capture Board + List IDs (one-time setup)

Priority: P1
Purpose: Collect identifiers and perform initial DB validation.

Steps

  1. Run Q1 to get BoardId for board name “QA Pack #1 — Ordering”
  2. Copy returned BoardId into subsequent queries
  3. Run Q2 using BoardId to get List IDs for Todo, Doing, Done
  4. Run DB checks:
    Q7 (list position duplicates within the board — expect 0 rows)
    Q9 (invalid list positions < 0 — expect 0 rows)

Expected

  • Q1 returns a single matching BoardId. If multiple rows match, select the correct BoardId and note the reason.
  • Q2 returns 3 lists with sensible Position values
  • Q7 returns 0 rows
  • Q9 returns 0 rows

Result

PASS

Evidence

  • UI video : TC-00-UI.mp4
  • DB:
  • TC-00-Q1.png
  • TC-00-Q2.png
  • TC-00-Q7.png
  • TC-00-Q9.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

Notes

  • UX observation: username display changed from “signed in as testuser” to “signed in as user” after re-login due to session expiry. Account remained the same.

Limitations

  • Did not test to identity differing display behavior across different machines/browsers.

Ticket Reorder Within a List

TC-01 (P1) — Reorder ticket within a list: bottom → top

Steps

  1. Open board “QA Pack #1 — Ordering”
  2. In Todo, drag Task 10 to the top (above Task 01)

Expected

  • UI shows Task 10 first in Todo
  • No duplicate/ghost tickets appear

DB Checks

  • Q4 for list Todo (verify ordering)
  • Q11 for ticket Task 10 (get all details of a ticket)
  • Q5 (duplicate positions across board — expect 0 rows)

Result

PASS

Click to view evidence

Evidence

  • UI video : TC-01-UI.mp4
  • DB:
  • TC-01-Q4.png
  • TC-01-Q11.png
  • TC-01-Q5.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

TC-02 (P1) — Reorder ticket within a list: top → bottom

Steps

  1. Drag Task 01 to the bottom of Todo

Expected

  • Task 01 is last in Todo

DB Checks

  • Q4 for list Todo (verify ordering)
  • Q5 (duplicate positions across board — expect 0 rows)

Result

PASS

Click to view evidence

Evidence

  • UI video : TC-02-UI.mp4
  • DB:
  • TC-02-Q4.png
  • TC-02-Q5.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

TC-03 (P1) — Adjacent ticket swap within a list

Steps

  1. Move Task 03 just above Task 02 in Todo

Expected

  • Task 03 appears immediately above Task 02

DB Checks

  • Q4 for list Todo (verify ordering)
  • Q5 (duplicate positions across board — expect 0 rows)

Result

PASS

Click to view evidence

Evidence

  • UI video : TC-03-UI.mp4
  • DB:
  • TC-03-Q4.png
  • TC-03-Q5.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

TC-04 (P1) — Middle ticket insertion within a list

Steps

  1. Drag Task 09 to sit between Task 04 and Task 05

Expected

  • Inserted correctly; surrounding tickets shift cleanly

DB Checks

  • Q4 for list Todo (verify ordering)
  • Q12 (gap detection — expect 0 rows)
  • Q5 (duplicate positions across board — expect 0 rows)

Result

PASS

Click to view evidence

Evidence

  • UI video : TC-04-UI.mp4
  • DB:
  • TC-04-Q4.png
  • TC-04-Q12.png
  • TC-04-Q5.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

Ticket Move Between Lists

TC-05 (P1) — Move ticket from Todo → Doing (to top)

Steps

  1. Drag Task 04 from Todo → top of Doing

Expected

  • Ticket disappears from Todo
  • Ticket appears at top of Doing

DB Checks

  • Q11 for ticket Task 04 (get all details of a ticket)
  • Q4 for list Todo (verify ordering)
  • Q4 for list Doing (verify ordering)
  • Q5 (duplicate positions across board — expect 0 rows)

Result

PASS

Click to view evidence

Evidence

  • UI video : TC-05-UI.mp4
  • DB:
  • TC-05-Q11.png
  • TC-05-Q4-for-todo.png
  • TC-05-Q4-for-doing.png
  • TC-05-Q5.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

TC-06 (P1) — Move ticket from Doing → Done (empty list)

Steps

  1. Drag Task 11 from Doing → Done (Done is empty to begin with)

Expected

  • List Done now contains exactly 1 ticket

DB Checks

  • Q11 for ticket Task 11 (get all details of a ticket)
  • Q4 for list Done (verify ordering)
  • Q10 (ticket counts per list)
  • Q5 (duplicate positions across board — expect 0 rows)

Result

PASS

Click to view evidence

Evidence

  • UI video : TC-06-UI.mp4
  • DB:
  • TC-06-Q11.png
  • TC-06-Q4.png
  • TC-06-Q10.png
  • TC-06-Q5.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

TC-07 (P1) — Move ticket into middle of target list

Steps

  1. Drag Task 05 from Todo → Doing between Task 11 and Task 12

Expected

  • Inserted in Doing at the drop position

DB Checks

  • Q11 for ticket Task 05 (get all details of a ticket)
  • Q4 for list Doing (verify ordering)
  • Q5 (duplicate positions across board — expect 0 rows)

Result

PASS

Click to view evidence

Evidence

  • UI video : TC-07-UI.mp4
  • DB:
  • TC-07-Q11.png
  • TC-07-Q4.png
  • TC-07-Q5.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

TC-08 (P1) — Move ticket back and forth between lists (state stability)

Steps

  1. Move Task 06 Todo → Doing
  2. Immediately move Task 06 Doing → Todo

Expected

  • Ticket ends in Todo once (no duplicates/ghost state)

DB Checks

  • Q11 for ticket Task 06 (get all details of a ticket)
  • Q5 (duplicate positions across board — expect 0 rows)

Result

PASS

Click to view evidence

Evidence

  • UI video : TC-08-UI.mp4
  • DB:
  • TC-08-Q11.png
  • TC-08-Q5.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

TC-09 (P1) — Move last ticket out of a list

Preconditions

  1. Done contains exactly 1 ticket (Task 11)

Steps

  1. Move Ticket Task 11 from Done → Todo

Expected

  • List Done becomes empty

DB Checks

  • Q4 for List Done (verify ordering)
  • Q10 (Get Ticket counts per list)
  • Q5 (duplicate positions across board — expect 0 rows)

Result

PASS

Click to view evidence

Evidence

  • UI video : TC-09-UI.mp4
  • DB:
  • TC-09-Q4.png
  • TC-09-Q10.png
  • TC-09-Q5.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

Persistence and Refresh

TC-10 (P1) — Ticket reorder persists after refresh

Steps

  1. Reorder Todo to an obvious order (Task 01 between Task 04 and Task 05)
  2. Run Q4 for Todo and save as “Before Refresh”
  3. Refresh the page
  4. Run Q4 for Todo again as “After Refresh”

Expected

  • UI order unchanged after refresh
  • DB ordering matches before refresh

DB Checks

  • Q4 for List Todo before refresh (verify ordering)
  • Q4 for List Todo after refresh (verify ordering)

Result

PASS

Click to view evidence

Evidence

  • UI video : TC-10-UI.mp4
  • DB:
  • TC-10-Q4-before-refresh.png
  • TC-10-Q4-after-refresh.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

TC-11 (P1) — Cross-list move persists after refresh

Steps

  1. Move Task 07 Todo → Done
  2. Run Q11 for Task 07 (“Before Refresh”)
  3. Refresh
  4. Run Q11 again (“After Refresh”)

Expected

  • Task 07 is still in Done after refresh

DB Checks

  • Q11 for Task 07 before refresh (get all details of one ticket)
  • Q11 for Task 07 after refresh (get all details of one ticket)

Result

PASS

Click to view evidence

Evidence

  • UI video : TC-11-UI.mp4
  • DB:
  • TC-11-Q11-before-refresh.png
  • TC-11-Q11-after-refresh.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

TC-12 (P1) — Board persistence after logout/login

Steps

  1. Perform a reorder : Move Task 01 between Task 02 and Task 03 in List Todo
  2. Perform a move : Move Task 11 from List Doing Done)
  3. Run Q6 (“Before Logout”)
  4. Log out
  5. Log back in
  6. Open board
  7. Run Q6 (“After Login”)

Expected

  • Board UI order matches Q6; persistence holds

DB Checks

  • Q6 before refresh (get all details of a board)
  • Q6 after refresh (get all details of a board)

Result

PASS

Click to view evidence

Evidence

  • UI video : TC-12-UI.mp4
  • DB:
  • TC-12-Q6-before-logout.png
  • TC-12-Q6-after-login.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

TC-13 (P1) — Persistence after navigating away and back

Steps

  1. Move Task 01 from List Todo → List Done
  2. Navigate to another board and then return

Expected

  • Change persists after navigation

DB Checks

  • Q11 for Task 01 (get all details of a ticket)

Result

PASS

Click to view evidence

Evidence

  • UI video : TC-13-UI.mp4
  • DB:
  • TC-13-Q11.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

Limitations

  • This case captured post-navigation verification only. It validates persistence, but does not include a pre-navigation DB snapshot like TC-10/11/12.
  • Potential future improvement: run Q11 before navigation as baseline.

List Reordering

TC-14 (P1) — Reorder lists

Steps

  1. Drag List Done to far left (before Todo)

Expected

  • List order updates in UI

DB Checks

  • Q2 (get all lists from a board)
  • Q7 (check for list position duplicates - expect 0 rows)
  • Q9 (check for invalid positions for Lists -  expect 0 rows)

Result

PASS

Click to view evidence

Evidence

  • UI video : TC-14-UI.mp4
  • DB:
  • TC-14-Q2.png
  • TC-14-Q7.png
  • TC-14-Q9.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

Notes (UX)

  • List drop zone preview length appears fixed and can look longer/shorter than the actual dragged list depending on ticket count.

TC-15 (P1) — Reorder lists multiple times + refresh

Steps

  1. Move list Todo right, then left again
  2. Run Q2 (“Before Refresh”)
  3. Refresh
  4. Run Q2 (“After Refresh”)

Expected

  • Final list order persists after refresh

DB Checks

  • Q2 before refresh (get all lists from a board)
  • Q2 after refresh (get all lists from a board)

Result

PASS

Click to view evidence

Evidence

  • UI video : TC-15-UI.mp4
  • DB:
  • TC-15-Q2-before-refresh.png
  • TC-15-Q2-after-refresh.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

Limitations

  • Because Todo started and ended in the same position, this case confirms refresh stability for the ‘no net change’ scenario, but doesn’t demonstrate persistence of a different final order.
  • Potential future improvement: end in a different final list order before refresh.

TC-16 (P1) — Move tickets after list reorder

Steps

  1. Swap positions of Lists Todo and Done
  2. Move Task 12 from List Doing → Todo

Expected

  • Ticket drag/drop still works after list reorder

DB Checks

  • Q11 for Task 12 (get all details of one ticket)
  • Q5 (duplicate positions across board — expect 0 rows)

Result

PASS

Click to view evidence

Evidence

  • UI video : TC-16-UI.mp4
  • DB:
  • TC-16-Q11.png
  • TC-16-Q5.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

“Try to Break It” High-Value Negatives

TC-17 (P1) — Rapid drag stress (same list) + integrity checks

Steps

  1. For 30 seconds, drag random tickets around in List Todo quickly

Expected

  • No duplicates, no invalid positions, no gaps

DB Checks

  • Q4 Get Tickets from list Todo (ordered)
  • Q5 (duplicate positions across board — expect 0 rows)
  • Q8 Check for invalid positions for Tickets (should be 0 rows)
  • Q12 Check for ordering gaps inside each list (should be 0 rows)

Result

PASS

Click to view evidence

Evidence

  • UI video : TC-17-UI.mp4
  • DB:
  • TC-17-Q4.png
  • TC-17-Q5.png
  • TC-17-Q8.png
  • TC-17-Q12.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

TC-18 (P1) — Rapid drag stress (cross-list) check

Steps

  1. Rapidly move Ticket Task 01 across lists 10 times
  2. Refresh

Expected

  • No duplicates, no invalid positions, no gaps

DB Checks

  • Q11 for Task 01 (Get all details of one ticket)

Result

PASS

Click to view evidence

Evidence

  • UI video : TC-18-UI.mp4
  • DB:
  • TC-18-Q11.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

Notes

  • Ideally should include a pre-refresh DB check as baseline (not executed)

TC-19 (P2) — Multi-tab conflict check

Preconditions

  1. Be logged in as the same authenticated user across both tabs
  2. Board “QA Pack #1 — Ordering” open in Tab A and Tab B

Steps

  1. In Tab A, reorder Task 01 from position 1 to after Task 10 (move Task 01 to bottom)
  2. Without refreshing Tab B, in Tab B reorder Task 10 from bottom to before Task 01 (move Task 10 to top)
  3. Refresh both tabs

Expected

  • No duplicates, no invalid positions, no gaps

DB Checks

  • Q4 for List Todo (get Tickets from a list)
  • Q5 (duplicate positions across board — expect 0 rows)

Result

FAIL

Click to view evidence

Evidence

  • UI video : TC-19-UI.mp4
  • DB:
  • TC-19-Q4.png
  • TC-19-Q5.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

Actual Result

After both conflicting reorders and refresh, both tabs converged to a third order that matches neither Tab A nor Tab B’s ordering outcome. Q5 returned 0 rows (no duplicates), confirming DB positional integrity, but reorder intent was not preserved.

Impact

Multi-tab usage can silently discard user-defined ordering and replace it with a fallback ordering, reducing trust in ordering reliability.

Notes / Analysis

System appears to apply a deterministic fallback when conflicting reorder operations happen. This maintains integrity but violates the expected conflict rule of preserving one committed reorder outcome.

TC-20 (P2) — Ticket drop onto invalid zones should not corrupt state

Steps

  1. Attempt dropping ticket Task 01 on non-list areas (header / blank space)
  2. Confirm it snaps back / drop is prevented

Expected

  • No state change in DB

DB Checks

  • Q11 for Task 01 (Get all details of one ticket)

Result

PASS

Click to view evidence

Evidence

  • UI video : TC-20-UI.mp4
  • DB:
  • TC-20-Q11.png
mysql> SELECT Id AS BoardId FROM Boards WHERE Name = 'QA Pack #1 – Ordering';
+--------------------------------------+
| BoardId                              |
+--------------------------------------+
| 9c1838be-30d3-4d28-abba-3fde3510fcaa |
+--------------------------------------+
1 row in set (0.00 sec)
TC-00-Q1
mysql> SELECT Id AS ListId, Name AS ListName, BoardId, Position as ListPosition FROM Lists WHERE BoardId =
'9c1838be-30d3-4d28-abba-3fde3510fcaa' ORDER BY Position ASC;
+--------------------------------------+----------+--------------------------------------+--------------+
| ListId                               | ListName | BoardId                               | ListPosition |
+--------------------------------------+----------+--------------------------------------+--------------+
| ea8d4849-6010-41de-9b84-5e864d5337ff | Todo     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            1 |
| 79098857-921c-4cea-b81d-02f63014576d | Doing    | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            2 |
| 867a8a79-1af9-434d-921f-10b90bb21909 | Done     | 9c1838be-30d3-4d28-abba-3fde3510fcaa |            3 |
+--------------------------------------+----------+--------------------------------------+--------------+
3 rows in set (0.00 sec)
TC-00-Q2
mysql> SELECT BoardId, Position AS ListPosition, COUNT(*) AS Cnt FROM Lists WHERE BoardId
= '9c1838be-30d3-4d28-abba-3fde3510fcaa' GROUP BY BoardId, Position HAVING COUNT(*) > 1;
Empty set (0.00 sec)
TC-00-Q7
mysql> SELECT * FROM Lists WHERE BoardId = '9c1838be-30d3-4d28-abba-3fde3510fcaa'
Empty set (0.00 sec)
TC-00-Q9

Notes

  • Ideally should include a pre-refresh DB check as baseline (not executed)