Skip to content

Commit cc453cd

Browse files
Merge branch 'main' of github.com:NHSDigital/bcss-playwright into feature/BCSS-20386-batch-processing-refactoring
2 parents 9ddaa6c + 628e560 commit cc453cd

File tree

4 files changed

+88
-16
lines changed

4 files changed

+88
-16
lines changed

.github/actions/run-playwright-tests/action.yml

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ inputs:
88
required: true
99
type: string
1010
marker_to_use:
11-
description: "The test marker to use when running tests (e.g. smokescreen)"
11+
description: "The test marker to use when running tests (e.g. smoke)"
1212
required: true
1313
type: string
1414

@@ -29,13 +29,10 @@ runs:
2929
run: python -m playwright install --with-deps
3030
- name: Run specified tests
3131
shell: bash
32-
run: pytest -m ${{ inputs.marker_to_use }} --base-url=$URL_TO_USE --ignore=tests_utils/
33-
env:
34-
BCSS_PASS: ${{ secrets.BCSS_PASS }}
35-
ORACLE_DB: ${ ${{ secrets.ORACLE_DB }}/<REPLACE>/${{ inputs.bcss_cloud_environment }} }
36-
ORACLE_USERNAME: ${{ secrets.ORACLE_USERNAME }}
37-
ORACLE_PASS: ${{ secrets.ORACLE_PASS }}
38-
URL_TO_USE: ${ ${{ vars.CLOUD_ENV_URL }}/<REPLACE>/${{ inputs.bcss_cloud_environment }} }
32+
run: |
33+
URL_TO_USE="${URL_TO_USE_DEFAULT//<REPLACE>/${{ inputs.bcss_cloud_environment }}}"
34+
ORACLE_DB="${ORACLE_DB_DEFAULT//<REPLACE>/${{ inputs.bcss_cloud_environment }}}"
35+
pytest -m ${{ inputs.marker_to_use }} --base-url=https://$URL_TO_USE --ignore=tests_utils/
3936
- uses: actions/upload-artifact@v4
4037
if: ${{ !cancelled() }}
4138
with:

.github/workflows/execute-tests.yaml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
name: "Test Runner"
22

3+
# This workflow is triggered manually and allows the user to specify the environment and test marker to run.
4+
# It is functional, however will not work against BCSS test environments until we configure some self-hosted
5+
# GitHub runners, as the GitHub-hosted runners are based outside of the UK so get blocked by the WAF on the
6+
# environments.
7+
38
on:
49
workflow_dispatch:
510
inputs:
@@ -17,12 +22,19 @@ jobs:
1722
run-tests:
1823
name: "Run Specified Tests"
1924
runs-on: ubuntu-latest
20-
timeout-minutes: 3
25+
timeout-minutes: 10
2126
steps:
2227
- name: "Checkout code"
2328
uses: actions/checkout@v4
2429
- name: "Run Tests"
30+
id: run-tests
2531
uses: ./.github/actions/run-playwright-tests
2632
with:
2733
bcss_cloud_environment: "${{ inputs.bcss_cloud_environment }}"
2834
marker_to_use: "${{ inputs.marker_to_use }}"
35+
env:
36+
BCSS_PASS: ${{ secrets.BCSS_PASS }}
37+
ORACLE_DB_DEFAULT: ${{ secrets.ORACLE_DB }}
38+
ORACLE_USERNAME: ${{ secrets.ORACLE_USERNAME }}
39+
ORACLE_PASS: ${{ secrets.ORACLE_PASS }}
40+
URL_TO_USE_DEFAULT: ${{ vars.CLOUD_ENV_URL }}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
from playwright.sync_api import Page, expect
2+
from pages.base_page import BasePage
3+
from enum import Enum
4+
5+
6+
class SubjectDatasets(BasePage):
7+
def __init__(self, page: Page):
8+
super().__init__(page)
9+
self.page = page
10+
11+
self.show_dataset_button = self.page.get_by_role("link", name="Show Dataset")
12+
13+
self.save_dataset_button = self.page.locator(
14+
"#UI_DIV_BUTTON_SAVE1"
15+
).get_by_role("button", name="Save Dataset")
16+
17+
self.select_asa_grade_dropdown = self.page.get_by_label("ASA Grade")
18+
19+
self.select_fit_for_colonoscopy_dropdown = self.page.get_by_label(
20+
"Fit for Colonoscopy (SSP)"
21+
)
22+
23+
self.dataset_complete_radio_button_yes = self.page.get_by_role(
24+
"radio", name="Yes"
25+
)
26+
27+
self.dataset_complete_radio_button_no = self.page.get_by_role(
28+
"radio", name="No"
29+
)
30+
31+
def click_show_datasets(self) -> None:
32+
self.click(self.show_dataset_button)
33+
34+
def save_dataset(self) -> None:
35+
self.click(self.save_dataset_button)
36+
37+
def select_asa_grade_option(self, option: str) -> None:
38+
self.select_asa_grade_dropdowen.select_option(option)
39+
40+
def select_fit_for_colonoscopy_option(self, option: str) -> None:
41+
self.select_fit_for_colonoscopy_dropdown.select_option(option)
42+
43+
def click_dataset_complete_radio_button_yes(self) -> None:
44+
self.dataset_complete_radio_button_yes.check()
45+
46+
def click_dataset_complete_radio_button_no(self) -> None:
47+
self.dataset_complete_radio_button_no.check()
48+
49+
50+
class AsaGradeOptions(Enum):
51+
FIT = "17009"
52+
53+
54+
class FitForColonoscopySspOptions(Enum):
55+
YES = "17058"

tests/smokescreen/test_compartment_5.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@
55
from pages.screening_practitioner_appointments.screening_practitioner_appointments import (
66
ScreeningPractitionerAppointmentsPage,
77
)
8+
from pages.screening_practitioner_appointments.subject_datasets import (
9+
SubjectDatasets,
10+
FitForColonoscopySspOptions,
11+
AsaGradeOptions,
12+
)
813
from pages.screening_subject_search.subject_screening_summary import (
914
SubjectScreeningSummary,
1015
)
@@ -94,22 +99,25 @@ def test_compartment_5(page: Page, smokescreen_properties: dict) -> None:
9499
SubjectScreeningSummary(page).click_datasets_link()
95100

96101
# Click on 'Show Dataset' next to the Colonoscopy Assessment
102+
SubjectDatasets(page).click_show_datasets()
97103

98104
# Populate Colonoscopy Assessment Details fields
99105

100106
# ASA Grade - I - Fit
107+
SubjectDatasets(page).select_asa_grade_option(AsaGradeOptions.FIT.value)
108+
101109
# Fit for Colonoscopy (SSP) - Yes
110+
SubjectDatasets(page).select_fit_for_colonoscopy_option(
111+
FitForColonoscopySspOptions.YES.value
112+
)
102113

103114
# Click 'Yes' for Dataset Complete?
115+
SubjectDatasets(page).click_dataset_complete_radio_button_yes()
116+
104117
# Click Save Dataset button
118+
SubjectDatasets(page).save_dataset()
119+
105120
# Click Back
106-
page.get_by_role("link", name="Show Dataset").click()
107-
page.get_by_label("ASA Grade").select_option("17009")
108-
page.get_by_label("Fit for Colonoscopy (SSP)").select_option("17058")
109-
page.get_by_role("radio", name="Yes").check()
110-
page.locator("#UI_DIV_BUTTON_SAVE1").get_by_role(
111-
"button", name="Save Dataset"
112-
).click()
113121
BasePage(page).click_back_button()
114122
BasePage(page).click_back_button()
115123
# This brings you back to the subject screening summary page

0 commit comments

Comments
 (0)