Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 22 additions & 9 deletions tests/e2e/test_work_metadata_offline.py
Original file line number Diff line number Diff line change
Expand Up @@ -433,12 +433,28 @@ def navigate(self, page, route):
Never return prksNavigate's Promise from page.evaluate — Playwright
awaits it, and a stuck leave/render wedges until the 300s watchdog.
Exit metadata edit first so leave is not blocked on an unsaved-draft
confirm the test never clicks.
confirm the test never clicks. Wait for the canonical hash so callers
do not race the departing route's still-visible DOM.
"""
page.evaluate("""() => {
if (typeof prksSetWorkDetailsMode === 'function') void prksSetWorkDetailsMode('view');
}""")
page.evaluate("r => { void prksNavigate(r); }", route)
page.wait_for_function("r => location.hash === r", arg=route)

def wait_progress_ready(self, page, status):
"""Progress hash committed and the requested status group rendered."""
route = '#/progress?status=' + quote(str(status), safe='')
page.wait_for_function(
"""(args) => {
if (location.hash !== args.hash) return false;
const main = document.querySelector('.prks-tile--main');
if (!main || main.querySelector('.prks-route-loading')) return false;
const title = main.querySelector('.prks-page-title');
return !!title && title.textContent.indexOf(args.status) !== -1;
}""",
arg={'hash': route, 'status': str(status)},
)

def recently_added(self, page):
"""Home -> Recently Added, warmed and rendered."""
Expand Down Expand Up @@ -884,13 +900,11 @@ def save_status(self, page):
def progress_ids(self, page, status):
"""The Work ids Progress shows for one status group."""
self.navigate(page, '#/progress?status=' + quote(str(status), safe=''))
page.wait_for_function("""() => {
const el = document.querySelector('.prks-tile--main');
return !!el && !el.querySelector('.prks-route-loading');
}""")
page.wait_for_timeout(120)
self.wait_progress_ready(page, status)
return page.evaluate(
"() => Array.from(document.querySelectorAll('[data-work-id]')).map(el => el.dataset.workId)")
"""() => Array.from(
document.querySelectorAll('.prks-tile--main [data-work-id]')
).map(el => el.dataset.workId)""")

def card_badge(self, page, work_id):
return page.evaluate("""id => {
Expand Down Expand Up @@ -1942,8 +1956,7 @@ def test_entering_the_editor_before_hydration_still_shows_pending_values(self):

def progress(self, page, status='In Progress'):
self.navigate(page, '#/progress?status=' + quote(str(status), safe=''))
page.wait_for_function("() => location.hash.indexOf('/progress') !== -1")
page.wait_for_selector('.card-grid')
self.wait_progress_ready(page, status)

def progress_excerpt(self, page, work_id):
return page.evaluate("""id => {
Expand Down
Loading