Skip to content

Commit 0dbd885

Browse files
committed
test(admin): assert jobs page stable roles
Update jobs LiveView tests to target stable ids, data roles, and desktop/mobile surfaces instead of exact layout classes or icon classes.
1 parent 8f0918f commit 0dbd885

2 files changed

Lines changed: 9 additions & 9 deletions

File tree

test/codex_pooler_web/live/admin/pages/jobs_live_table_test.exs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,6 @@ defmodule CodexPoolerWeb.Admin.JobsLiveTableTest do
219219
assert has_element?(view, "#{row} [data-role='job-meta']", "##{job.id}")
220220
assert has_element?(view, "#{row} [data-role='job-event-label']", "Discarded")
221221
assert has_element?(view, "#{row} [data-role='job-event-time']", "2026-05-04 10:02:00 UTC")
222-
refute has_element?(view, "#{row} [data-role='job-event-time'].font-mono")
223-
refute has_element?(view, "#{row} [data-role='attempts'].font-mono")
224222
assert has_element?(view, "#{row} [data-role='failure-title']", "Attempt 2 · RuntimeError")
225223

226224
refute has_element?(view, "#{row} [data-role='inserted-at']")
@@ -243,8 +241,8 @@ defmodule CodexPoolerWeb.Admin.JobsLiveTableTest do
243241
rendered = render(view)
244242

245243
assert has_element?(view, "#admin-jobs-explorer")
246-
assert rendered =~ ~s(id="admin-jobs-explorer" class="grid min-w-0 gap-3")
247-
assert rendered =~ ~s(id="admin-jobs-explorer-table" class="table table-sm admin-log-table)
244+
assert has_element?(view, "#admin-jobs-explorer-desktop #admin-jobs-explorer-table")
245+
assert has_element?(view, "#admin-jobs-explorer-mobile")
248246
assert has_element?(view, "#admin-jobs-explorer-total", "55 jobs")
249247
assert has_element?(view, "#admin-jobs-explorer-range", "Showing 1-20 of 55")
250248
refute has_element?(view, "#admin-jobs-explorer-table th", "State")
@@ -324,7 +322,7 @@ defmodule CodexPoolerWeb.Admin.JobsLiveTableTest do
324322
end
325323

326324
defp state_label_selector(job),
327-
do: "#job-#{job.id} [data-role='state-label']:not([class*='bg-'])"
325+
do: "#job-#{job.id} [data-role='state-label']"
328326

329327
defp worker_card_selector(worker_group) do
330328
"#job-worker-card-#{String.replace(Atom.to_string(worker_group), "_", "-")}"

test/codex_pooler_web/live/admin/pages/jobs_live_test.exs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -219,9 +219,12 @@ defmodule CodexPoolerWeb.Admin.JobsLiveTest do
219219
assert has_element?(view, "#admin-jobs-page-header", "System Jobs")
220220
assert has_element?(view, "#admin-jobs-page-header", "Monitor background work")
221221
assert has_element?(view, "#admin-jobs-worker-grid")
222-
assert has_element?(view, "#admin-jobs-worker-grid.items-start")
223222
assert has_element?(view, worker_card_selector(:runtime_cleanup), "Runtime cleanup")
224-
assert has_element?(view, "#{worker_card_selector(:runtime_cleanup)} .hero-sparkles")
223+
224+
assert has_element?(
225+
view,
226+
"#{worker_card_selector(:runtime_cleanup)} [data-role='worker-card-header']"
227+
)
225228

226229
refute has_element?(
227230
view,
@@ -279,7 +282,6 @@ defmodule CodexPoolerWeb.Admin.JobsLiveTest do
279282
)
280283

281284
rendered = render(view)
282-
assert rendered =~ "2xl:grid-cols-3"
283285
refute rendered =~ "Per-pool model catalog refreshes and scheduled fan-out"
284286
refute rendered =~ "OpenAI pricing JSON catalog refreshes for request-log cost reporting"
285287
refute rendered =~ "Quota, health, token, and catalog checks for upstream assignments"
@@ -926,7 +928,7 @@ defmodule CodexPoolerWeb.Admin.JobsLiveTest do
926928
defp unique_slug(prefix), do: "#{prefix}-#{System.unique_integer([:positive])}"
927929

928930
defp state_label_selector(job),
929-
do: "#job-#{job.id} [data-role='state-label']:not([class*='bg-'])"
931+
do: "#job-#{job.id} [data-role='state-label']"
930932

931933
defp worker_card_selector(worker_group) do
932934
"#job-worker-card-#{String.replace(Atom.to_string(worker_group), "_", "-")}"

0 commit comments

Comments
 (0)