mirror of
https://github.com/pretix/pretix.git
synced 2026-04-28 00:02:37 +00:00
add e2e tests for widget button, testing empty cart, adding specific items, and subevents
This commit is contained in:
@@ -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>"""
|
||||
|
||||
73
src/tests/e2e/test_widget_button.py
Normal file
73
src/tests/e2e/test_widget_button.py
Normal 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)
|
||||
Reference in New Issue
Block a user