This commit is contained in:
Kenneth Kehl
2024-10-07 10:45:02 -07:00
parent 44524eb9e2
commit b4b15bc209
7 changed files with 68 additions and 27 deletions

View File

@@ -133,7 +133,7 @@
"filename": ".github/workflows/checks.yml", "filename": ".github/workflows/checks.yml",
"hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", "hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8",
"is_verified": false, "is_verified": false,
"line_number": 80, "line_number": 79,
"is_secret": false "is_secret": false
} }
], ],
@@ -684,5 +684,5 @@
} }
] ]
}, },
"generated_at": "2024-10-07T17:03:38Z" "generated_at": "2024-10-07T17:44:55Z"
} }

View File

@@ -71,7 +71,6 @@ jobs:
NOTIFY_E2E_TEST_EMAIL: ${{ secrets.NOTIFY_E2E_TEST_EMAIL }} NOTIFY_E2E_TEST_EMAIL: ${{ secrets.NOTIFY_E2E_TEST_EMAIL }}
NOTIFY_E2E_TEST_PASSWORD: ${{ secrets.NOTIFY_E2E_TEST_PASSWORD }} NOTIFY_E2E_TEST_PASSWORD: ${{ secrets.NOTIFY_E2E_TEST_PASSWORD }}
NOTIFY_E2E_TEST_URI: http://localhost:6012/ NOTIFY_E2E_TEST_URI: http://localhost:6012/
GRRR_SERVICES: ${{ VCAP_SERVICES }}
services: services:
postgres: postgres:
image: postgres image: postgres
@@ -114,26 +113,6 @@ jobs:
run: | run: |
if [ -z "${{ env.VCAP_SERVICES }}" ]; then
echo "env vcap is not set"
else
echo "env vcap is ${#SECRET_KEY}"
fi
if [ -z "${{ PLAIN_VCAP }}" ]; then
echo "Plain vcap is not set"
else
echo "Length of plain is ${#PLAIN_VCAP}"
fi
if [ -z "${{ env.GRRR_SERVICES }}" ]; then
echo "env grrr is not set"
else
echo "env grrr is ${#GRRR_SERVICES}"
fi
if [ -z "${{ PLAIN_GRRR }}" ]; then
echo "Plain grrr is not set"
else
echo "Length of plain grrr is ${#PLAIN_GRRR}"
fi
make run-flask > admin-server.log 2>&1 & make run-flask > admin-server.log 2>&1 &
tail -f admin-server.log & tail -f admin-server.log &
make e2e-test make e2e-test
@@ -149,10 +128,7 @@ jobs:
NOTIFY_E2E_TEST_EMAIL: ${{ secrets.NOTIFY_E2E_TEST_EMAIL }} NOTIFY_E2E_TEST_EMAIL: ${{ secrets.NOTIFY_E2E_TEST_EMAIL }}
NOTIFY_E2E_TEST_PASSWORD: ${{ secrets.NOTIFY_E2E_TEST_PASSWORD }} NOTIFY_E2E_TEST_PASSWORD: ${{ secrets.NOTIFY_E2E_TEST_PASSWORD }}
NOTIFY_E2E_TEST_URI: http://localhost:6012/ NOTIFY_E2E_TEST_URI: http://localhost:6012/
VCAP_SERVICES: ${{ env.VCAP_SERVICES }} VCAP_SERVICES: ${{ secrets.VCAP_SERVICES }}
PLAIN_VCAP: $VCAP_SERVICES
GRRR_SERVICES: ${{ env.GRRR_SERVICES }}
PLAIN_GRRR: $GRRR_SERVICES
validate-new-relic-config: validate-new-relic-config:
runs-on: ubuntu-latest runs-on: ubuntu-latest
environment: staging environment: staging

View File

@@ -507,3 +507,19 @@ insurance.
For more information on what we're working on, the Notify tool, and how to get For more information on what we're working on, the Notify tool, and how to get
involved with our team, involved with our team,
[see our flyer.](https://github.com/GSA/notifications-admin/blob/main/docs/notify-pilot-flyer.md) [see our flyer.](https://github.com/GSA/notifications-admin/blob/main/docs/notify-pilot-flyer.md)
## Updating secrets for the E2E tests
At some point, E2E tests will fail because the secrets held in VCAP_SERVICES have expired. To refresh
them, you will need to do the following:
1. Log in the normal way to access cloudfoundry command line options
2. Run `cf env notify-admin-staging`
3. Copy everything for the json in VCAP_SERVICES
4. Open a test file and make a new test anywhere that is convenient
5. Paste the secret into the test file
6. Make your test look like this: `print(json.dumps(VCAP_SERVICES))`
7. Copy the output of this test (stringified VCAP_SERVICES) into the VCAP_SERVICES secret in github on the staging tier
8. Delete everything you did in #4, #5, and #6.
9. Rerun the E2E tests
10. Note: Pay attention to whitespace, etc. It's very sensitive to formatting.

View File

@@ -85,16 +85,22 @@ def test_add_new_service_workflow(authenticated_page, end_to_end_context):
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
page.click("text='Delete this service'") page.click("text='Delete this service'")
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
page.click("text='Yes, delete'") page.click("text='Yes, delete'")
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
# Check the page title exists and matches what we expect. # Check the page title exists and matches what we expect.

View File

@@ -4,6 +4,7 @@ import re
import uuid import uuid
from playwright.sync_api import expect 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") E2E_TEST_URI = os.getenv("NOTIFY_E2E_TEST_URI")
@@ -16,6 +17,8 @@ def create_new_template(page):
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
send_messages_button = page.get_by_role("link", name="Send messages") send_messages_button = page.get_by_role("link", name="Send messages")
expect(send_messages_button).to_be_visible() expect(send_messages_button).to_be_visible()
@@ -23,6 +26,8 @@ def create_new_template(page):
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
create_template_button = page.get_by_role("button", name="New template") create_template_button = page.get_by_role("button", name="New template")
expect(create_template_button).to_be_visible() expect(create_template_button).to_be_visible()
@@ -30,6 +35,8 @@ def create_new_template(page):
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
start_with_a_blank_template_radio = page.get_by_text("Start with a blank template") start_with_a_blank_template_radio = page.get_by_text("Start with a blank template")
expect(start_with_a_blank_template_radio).to_be_visible() expect(start_with_a_blank_template_radio).to_be_visible()
@@ -43,6 +50,8 @@ def create_new_template(page):
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
template_name_input = page.get_by_text("Template name") template_name_input = page.get_by_text("Template name")
expect(template_name_input).to_be_visible() expect(template_name_input).to_be_visible()
@@ -59,6 +68,8 @@ def create_new_template(page):
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
use_this_template_button = page.get_by_text("Use this template") use_this_template_button = page.get_by_text("Use this template")
expect(use_this_template_button).to_be_visible() expect(use_this_template_button).to_be_visible()
@@ -80,6 +91,8 @@ def create_new_template(page):
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
# We are not going to send the message for this test, we just want to confirm # We are not going to send the message for this test, we just want to confirm
# that the template has been created and we are now seeing the message from the # that the template has been created and we are now seeing the message from the
@@ -92,6 +105,8 @@ def test_create_new_template(end_to_end_context):
page.goto(f"{E2E_TEST_URI}/sign-in") page.goto(f"{E2E_TEST_URI}/sign-in")
# Wait for the next page to fully load. # Wait for the next page to fully load.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
current_date_time = datetime.datetime.now() current_date_time = datetime.datetime.now()
new_service_name = "E2E Federal Test Service {now} - {browser_type}".format( new_service_name = "E2E Federal Test Service {now} - {browser_type}".format(
@@ -102,6 +117,8 @@ def test_create_new_template(end_to_end_context):
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
# Check the page title exists and matches what we expect. # Check the page title exists and matches what we expect.
@@ -130,6 +147,8 @@ def test_create_new_template(end_to_end_context):
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
# Check for the sign in heading. # Check for the sign in heading.
about_heading = page.get_by_role("heading", name="About your service") about_heading = page.get_by_role("heading", name="About your service")
@@ -150,6 +169,8 @@ def test_create_new_template(end_to_end_context):
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
# TODO this fails on staging due to duplicate results on 'get_by_text' # TODO this fails on staging due to duplicate results on 'get_by_text'
# Check for the service name title and heading. # Check for the service name title and heading.
@@ -168,16 +189,22 @@ def _teardown(page):
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
page.click("text='Delete this service'") page.click("text='Delete this service'")
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
page.click("text='Yes, delete'") page.click("text='Yes, delete'")
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
# Check the page title exists and matches what we expect. # Check the page title exists and matches what we expect.

View File

@@ -21,6 +21,8 @@ def _setup(page):
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
# Check the page title exists and matches what we expect. # Check the page title exists and matches what we expect.
@@ -49,6 +51,8 @@ def _setup(page):
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
# Check for the sign in heading. # Check for the sign in heading.
about_heading = page.get_by_role("heading", name="About your service") about_heading = page.get_by_role("heading", name="About your service")
@@ -69,6 +73,8 @@ def _setup(page):
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
# TODO this fails on staging due to duplicate results on 'get_by_text' # TODO this fails on staging due to duplicate results on 'get_by_text'
# Check for the service name title and heading. # Check for the service name title and heading.
@@ -98,6 +104,8 @@ def test_invite_team_member_to_service(authenticated_page):
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
# Check for invite a team member button # Check for invite a team member button
invite_team_member_button = page.get_by_role("button", name="Invite a team member") invite_team_member_button = page.get_by_role("button", name="Invite a team member")
@@ -172,6 +180,8 @@ def _teardown(page):
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
# Check the page title exists and matches what we expect. # Check the page title exists and matches what we expect.

View File

@@ -23,6 +23,8 @@ def _setup(page):
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
# Check the page title exists and matches what we expect. # Check the page title exists and matches what we expect.
@@ -72,6 +74,8 @@ def _setup(page):
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
# TODO this fails on staging due to duplicate results on 'get_by_text' # TODO this fails on staging due to duplicate results on 'get_by_text'
# Check for the service name title and heading. # Check for the service name title and heading.
@@ -352,6 +356,8 @@ def _teardown(page):
# Check to make sure that we've arrived at the next page. # Check to make sure that we've arrived at the next page.
page.wait_for_load_state("domcontentloaded") page.wait_for_load_state("domcontentloaded")
check_axe_report(page)
page.click("text='Yes, delete'") page.click("text='Yes, delete'")