mirror of
https://github.com/GSA/notifications-admin.git
synced 2025-12-14 17:13:25 -05:00
81 lines
2.8 KiB
Python
81 lines
2.8 KiB
Python
import os
|
|
import re
|
|
|
|
from playwright.sync_api import expect
|
|
|
|
from tests.end_to_end.conftest import check_axe_report
|
|
|
|
E2E_TEST_URI = os.getenv("NOTIFY_E2E_TEST_URI")
|
|
|
|
|
|
def test_add_new_service_workflow(e2e_test_service):
|
|
"""Test creating and deleting a service with automatic cleanup."""
|
|
# Get service info from fixture (cleanup is automatic)
|
|
new_service_name = e2e_test_service["name"]
|
|
page = e2e_test_service["page"]
|
|
|
|
page.goto(f"{E2E_TEST_URI}/accounts")
|
|
|
|
# Check to make sure that we've arrived at the next page.
|
|
page.wait_for_load_state("domcontentloaded")
|
|
check_axe_report(page)
|
|
|
|
# Check to make sure that we've arrived at the next page.
|
|
# Check the page title exists and matches what we expect.
|
|
expect(page).to_have_title(re.compile("Choose service"))
|
|
|
|
# Check for the sign in heading.
|
|
sign_in_heading = page.get_by_role("heading", name="Choose service")
|
|
expect(sign_in_heading).to_be_visible()
|
|
|
|
# Retrieve some prominent elements on the page for testing.
|
|
add_service_button = page.get_by_role(
|
|
"button", name=re.compile("Add a new service")
|
|
)
|
|
|
|
expect(add_service_button).to_be_visible()
|
|
|
|
existing_service_link = page.get_by_role("link", name=new_service_name)
|
|
|
|
# Check to see if the service was already created - if so, we should fail.
|
|
# TODO: Figure out how to make this truly isolated, and/or work in a
|
|
# delete service workflow.
|
|
expect(existing_service_link).to_have_count(0)
|
|
|
|
# Click on add a new service.
|
|
add_service_button.click()
|
|
|
|
# Check to make sure that we've arrived at the next page.
|
|
page.wait_for_load_state("domcontentloaded")
|
|
check_axe_report(page)
|
|
|
|
# Check for the sign in heading.
|
|
about_heading = page.get_by_role("heading", name="About your service")
|
|
expect(about_heading).to_be_visible()
|
|
|
|
# Retrieve some prominent elements on the page for testing.
|
|
service_name_input = page.locator('xpath=//input[@name="name"]')
|
|
add_service_button = page.get_by_role("button", name=re.compile("Add service"))
|
|
|
|
expect(service_name_input).to_be_visible()
|
|
expect(add_service_button).to_be_visible()
|
|
|
|
# Fill in the form.
|
|
service_name_input.fill(new_service_name)
|
|
|
|
# Click on add service.
|
|
add_service_button.click()
|
|
|
|
# Check to make sure that we've arrived at the next page.
|
|
page.wait_for_load_state("domcontentloaded")
|
|
check_axe_report(page)
|
|
|
|
# TODO this fails on staging due to duplicate results on 'get_by_text'
|
|
# Check for the service name title and heading.
|
|
# service_heading = page.get_by_text(new_service_name, exact=True)
|
|
# expect(service_heading).to_be_visible()
|
|
expect(page).to_have_title(re.compile(new_service_name))
|
|
|
|
# Service will be automatically cleaned up by the e2e_test_service fixture
|
|
# even if the test fails before reaching this point
|