From 3f7d1ffffec8f325c85c03ab81de88e74c45f338 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Wed, 28 Aug 2024 11:17:52 -0700 Subject: [PATCH] increase debug --- tests/end_to_end/conftest.py | 49 +------ tests/end_to_end/test_create_new_template.py | 140 +++++++++---------- 2 files changed, 68 insertions(+), 121 deletions(-) diff --git a/tests/end_to_end/conftest.py b/tests/end_to_end/conftest.py index 52e29e677..e5ba4e884 100644 --- a/tests/end_to_end/conftest.py +++ b/tests/end_to_end/conftest.py @@ -17,50 +17,9 @@ def login_for_end_to_end_testing(browser): # Test trying to sign in. #sign_in_button.click() - # Wait for the next page to fully load. - page.wait_for_load_state("domcontentloaded") - - # Check for the sign in form elements. - # NOTE: Playwright cannot find input elements by role and recommends using - # get_by_label() instead; however, hidden form elements do not have - # labels associated with them, hence the XPath! - # See https://playwright.dev/python/docs/api/class-page#page-get-by-label - # and https://playwright.dev/python/docs/locators#locate-by-css-or-xpath - # for more information. - #email_address_input = page.get_by_label("Email address") - #password_input = page.get_by_label("Password") - #continue_button = page.get_by_role("button", name=re.compile("Continue")) - - # Sign in to the site. - #email_address_input.fill(os.getenv("NOTIFY_E2E_TEST_EMAIL")) - #password_input.fill(os.getenv("NOTIFY_E2E_TEST_PASSWORD")) - #continue_button.click() - # Wait for the next page to fully load. page.wait_for_load_state("domcontentloaded") print(f"PAGE ON CONFTEST AFTER SIGNIN IS {page}") - # Check for the sign in form elements. - # NOTE: Playwright cannot find input elements by role and recommends using - # get_by_label() instead; however, hidden form elements do not have - # labels associated with them, hence the XPath! - # See https://playwright.dev/python/docs/api/class-page#page-get-by-label - # and https://playwright.dev/python/docs/locators#locate-by-css-or-xpath - # for more information. - # mfa_input = page.get_by_label('Text message code') - # continue_button = page.get_by_role('button', name=re.compile('Continue')) - - # # Enter MFA code and continue. - # TODO: Revisit this at a later point in time. - # totp = pyotp.TOTP( - # os.getenv('MFA_TOTP_SECRET'), - # digits=int(os.getenv('MFA_TOTP_LENGTH')) - # ) - - # mfa_input.fill(totp.now()) - # continue_button.click() - - # page.wait_for_load_state('domcontentloaded') - # Save storage state into the file. auth_state_path = os.path.join( os.getenv("NOTIFY_E2E_AUTH_STATE_PATH"), "state.json" @@ -102,14 +61,8 @@ def pytest_generate_tests(metafunc): def authenticated_page(end_to_end_context): # Open a new page and go to the site. page = end_to_end_context.new_page() - page.goto(f"{E2E_TEST_URI}/") + page.goto(f"{E2E_TEST_URI}/sign-in") - # Wait for the next page to fully load. - page.wait_for_load_state("domcontentloaded") - - # Sign in to the site - E2E test accounts are set to flow through. - sign_in_button = page.get_by_role("link", name="Sign in") - sign_in_button.click() # Wait for the next page to fully load. page.wait_for_load_state("domcontentloaded") diff --git a/tests/end_to_end/test_create_new_template.py b/tests/end_to_end/test_create_new_template.py index 99e09639a..0d3273572 100644 --- a/tests/end_to_end/test_create_new_template.py +++ b/tests/end_to_end/test_create_new_template.py @@ -9,78 +9,6 @@ from playwright.sync_api import expect E2E_TEST_URI = os.getenv("NOTIFY_E2E_TEST_URI") -def _setup(page): - # Prepare for adding a new service later in the test. - - current_date_time = datetime.datetime.now() - new_service_name = "E2E Federal Test Service {now} - {browser_type}".format( - now=current_date_time.strftime("%m/%d/%Y %H:%M:%S"), - browser_type=page.context.browser.browser_type.name, - ) - print(f"GOING TO {E2E_TEST_URI}/accounts") - 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") - print(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 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 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)) - - return new_service_name - def create_new_template(page): @@ -166,7 +94,73 @@ def test_create_new_template(authenticated_page): print(f"PAGE ON ENTER TEST_CREATE_NEW_TEMPLATE IS {page}") - _setup(page) + current_date_time = datetime.datetime.now() + new_service_name = "E2E Federal Test Service {now} - {browser_type}".format( + now=current_date_time.strftime("%m/%d/%Y %H:%M:%S"), + browser_type=page.context.browser.browser_type.name, + ) + print(f"NEW SERVICE NAME {new_service_name}") + print(f"GOING TO {E2E_TEST_URI}/accounts") + 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") + print(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 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 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)) create_new_template(page)