add e2e tests for widget button, testing empty cart, adding specific items, and subevents

This commit is contained in:
rash
2026-03-13 10:14:46 +01:00
parent 2dade31f23
commit 3c1b806c8e
2 changed files with 74 additions and 1 deletions

View File

@@ -1205,7 +1205,7 @@ def _register_widget_test_view():
<link rel="stylesheet" type="text/css" href="{widget_css}" crossorigin>
</head>
<body>
<pretix-button event="{event_url}"{extra_attrs}>{button_text}</pretix-button>
<pretix-button event="{event_url}"{extra_attrs} skip-ssl-check>{button_text}</pretix-button>
{script_tag}
</body>
</html>"""

View File

@@ -0,0 +1,73 @@
import pytest
from playwright.sync_api import Page, expect
@pytest.mark.django_db
class TestButtonJourney:
"""
Complete purchase journeys for a regular event.
Tests item visibility, variation visibility, adding items and variations to cart, and checkout up until showing the iframe.
"""
def test_no_predefined_items_journey(
self,
page: Page,
live_server_url: str,
organizer,
event,
items,
widget_page
):
widget_page.goto_button_test_page(
live_server_url, organizer.slug, event.slug)
button = page.locator('.pretix-button')
button.click()
iframe = widget_page.wait_for_iframe_checkout()
expect(iframe.locator('#btn-add-to-cart')).to_be_visible(timeout=15000)
def test_predefined_items_journey(
self,
page: Page,
live_server_url: str,
organizer,
event,
items,
widget_page
):
item_str = ','.join(f'item_{item.pk}=1' for item in items)
widget_page.goto_button_test_page(
live_server_url, organizer.slug, event.slug, items=item_str)
button = page.locator('.pretix-button')
button.click()
iframe = widget_page.wait_for_iframe_checkout()
# TODO a bit janky selector
expect(iframe.locator('text=/200\\.00/')).to_be_visible(timeout=15000)
def test_subevent_button_journey(
self,
page: Page,
live_server_url: str,
organizer,
event_series,
widget_page
):
event, subevents = event_series
subevent = subevents[2]
widget_page.goto_button_test_page(
live_server_url, organizer.slug, event.slug,
subevent=str(subevent.pk))
button = page.locator('.pretix-button')
button.click()
iframe = widget_page.wait_for_iframe_checkout()
expect(iframe.locator('#btn-add-to-cart')).to_be_visible(timeout=15000)
page.pause()
expect(iframe.get_by_role('heading', name='Concert Night 3')).to_be_visible(timeout=15000)