Unify deletion confirmation to use web dialog for share deletion as well

This commit is contained in:
Max Berger
2026-03-18 21:56:37 +01:00
parent f4dd3c5d50
commit f4ee4f7060
7 changed files with 80 additions and 57 deletions

View File

@@ -41,18 +41,18 @@ def test_delete_wrong_confirmation(page: Page, radicale_server: str) -> None:
page.click('article:not(.hidden) a[data-name="delete"]', force=True)
# Input wrong confirmation
page.fill('#deletecollectionscene input[data-name="confirmationtxt"]', "foo")
page.click('#deletecollectionscene button[data-name="delete"]')
page.fill('#deleteconfirmationscene input[data-name="confirmationtxt"]', "foo")
page.click('#deleteconfirmationscene button[data-name="delete"]')
# Check for error message
error_locator = page.locator('#deletecollectionscene span[data-name="error"]')
error_locator = page.locator('#deleteconfirmationscene span[data-name="error"]')
expect(error_locator).to_be_visible()
expect(error_locator).to_contain_text(
"Please type DELETE in the confirmation field"
)
# Scene should still be visible
expect(page.locator("#deletecollectionscene")).to_be_visible()
expect(page.locator("#deleteconfirmationscene")).to_be_visible()
def test_delete_correct_confirmation(page: Page, radicale_server: str) -> None:
@@ -67,11 +67,11 @@ def test_delete_correct_confirmation(page: Page, radicale_server: str) -> None:
page.click('article:not(.hidden) a[data-name="delete"]', force=True)
# Input correct confirmation
page.fill('#deletecollectionscene input[data-name="confirmationtxt"]', "DELETE")
page.click('#deletecollectionscene button[data-name="delete"]')
page.fill('#deleteconfirmationscene input[data-name="confirmationtxt"]', "DELETE")
page.click('#deleteconfirmationscene button[data-name="delete"]')
# Verify collection is gone
expect(page.locator("article:not(.hidden)")).to_have_count(0)
# Scene should be hidden
expect(page.locator("#deletecollectionscene")).to_be_hidden()
expect(page.locator("#deleteconfirmationscene")).to_be_hidden()

View File

@@ -68,10 +68,10 @@ def test_navigation_delete_collection_cancel(page: Page, radicale_server: str) -
page.hover("article:not(.hidden)")
page.click('article:not(.hidden) a[data-name="delete"]', force=True)
expect(page.locator("#deletecollectionscene")).to_be_visible()
expect(page.locator("#deleteconfirmationscene")).to_be_visible()
page.click('#deletecollectionscene button[data-name="cancel"]')
expect(page.locator("#deletecollectionscene")).to_be_hidden()
page.click('#deleteconfirmationscene button[data-name="cancel"]')
expect(page.locator("#deleteconfirmationscene")).to_be_hidden()
expect(page.locator("#collectionsscene")).to_be_visible()
@@ -82,18 +82,18 @@ def test_navigation_delete_collection_confirm(page: Page, radicale_server: str)
page.hover("article:not(.hidden)")
page.click('article:not(.hidden) a[data-name="delete"]', force=True)
expect(page.locator("#deletecollectionscene")).to_be_visible()
expect(page.locator("#deleteconfirmationscene")).to_be_visible()
# We need to fill the confirmation text
confirmation_text = page.locator(
"#deletecollectionscene [data-name='deleteconfirmationtext']"
"#deleteconfirmationscene [data-name='deleteconfirmationtext']"
).inner_text()
page.locator("#deletecollectionscene input[data-name='confirmationtxt']").fill(
page.locator("#deleteconfirmationscene input[data-name='confirmationtxt']").fill(
confirmation_text
)
page.click('#deletecollectionscene button[data-name="delete"]')
page.click('#deleteconfirmationscene button[data-name="delete"]')
expect(page.locator("#deletecollectionscene")).to_be_hidden()
expect(page.locator("#deleteconfirmationscene")).to_be_hidden()
expect(page.locator("#collectionsscene")).to_be_visible()
expect(page.locator("article:not(.hidden)")).to_have_count(0)

View File

@@ -52,8 +52,8 @@ def test_create_and_delete_share_by_key(page: Page, radicale_server: str) -> Non
"tr[data-name='sharetokenrowtemplate']:not(.hidden) span[data-name='ro']"
)
).to_be_visible()
page.once("dialog", lambda dialog: dialog.accept())
page.click('tr:not(.hidden) button[data-name="delete"]', strict=True)
page.click('#deleteconfirmationscene button[data-name="delete"]')
expect(
page.locator("tr[data-name='sharetokenrowtemplate']:not(.hidden)")
).to_have_count(0)
@@ -68,8 +68,8 @@ def test_create_and_delete_share_by_key(page: Page, radicale_server: str) -> Non
"tr[data-name='sharetokenrowtemplate']:not(.hidden) span[data-name='rw']"
)
).to_be_visible()
page.once("dialog", lambda dialog: dialog.accept())
page.click('tr:not(.hidden) button[data-name="delete"]', strict=True)
page.click('#deleteconfirmationscene button[data-name="delete"]')
expect(
page.locator("tr[data-name='sharetokenrowtemplate']:not(.hidden)")
).to_have_count(0)
@@ -97,8 +97,8 @@ def test_create_and_delete_share_by_map(page: Page, radicale_server: str) -> Non
"tr[data-name='sharemaprowtemplate']:not(.hidden) span[data-name='ro']"
)
).to_be_visible()
page.once("dialog", lambda dialog: dialog.accept())
page.click('tr:not(.hidden) button[data-name="delete"]', strict=True)
page.click('#deleteconfirmationscene button[data-name="delete"]')
expect(
page.locator("tr[data-name='sharemaprowtemplate']:not(.hidden)")
).to_have_count(0)
@@ -115,8 +115,8 @@ def test_create_and_delete_share_by_map(page: Page, radicale_server: str) -> Non
"tr[data-name='sharemaprowtemplate']:not(.hidden) span[data-name='rw']"
)
).to_be_visible()
page.once("dialog", lambda dialog: dialog.accept())
page.click('tr:not(.hidden) button[data-name="delete"]', strict=True)
page.click('#deleteconfirmationscene button[data-name="delete"]')
expect(
page.locator("tr[data-name='sharemaprowtemplate']:not(.hidden)")
).to_have_count(0)
@@ -192,8 +192,12 @@ def test_share_journal_no_overrides(page: Page, radicale_server: str) -> None:
# Verify property override visibility
expect(page.locator('fieldset[data-name="properties_override"]')).to_be_visible()
expect(page.locator('input[data-name="displayname_override_enabled"]')).to_be_visible()
expect(page.locator('input[data-name="description_override_enabled"]')).to_be_hidden()
expect(
page.locator('input[data-name="displayname_override_enabled"]')
).to_be_visible()
expect(
page.locator('input[data-name="description_override_enabled"]')
).to_be_hidden()
expect(page.locator('input[data-name="color_override_enabled"]')).to_be_hidden()
# Create the share