Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
f074d2a
QA-8162 testcases added for login tabs
kbo001 Oct 29, 2025
439ab2d
QA-8162 corrected yml for extended tests
kbo001 Oct 29, 2025
acbe46d
QA-8162 update missing secret
kbo001 Oct 29, 2025
8a219b8
QA-8162 corrected staff creation variables and added timeout
kbo001 Oct 30, 2025
21cad86
QA-8162 updated yml and commented incorrect steps for staff creation
kbo001 Oct 30, 2025
2bfe41f
QA-8162 added testcase 12
kbo001 Nov 6, 2025
08fd6cd
QA-8162 updated the testcases steps
kbo001 Nov 7, 2025
11475e1
QA-8162 updated the presetup testcase mark
kbo001 Nov 7, 2025
1ab67a9
QA-8162 removed repeatative step
kbo001 Nov 7, 2025
438a5a4
QA-8162 fix for testcase 10
kbo001 Nov 7, 2025
672401e
QA-8162 removed commented steps
kbo001 Nov 7, 2025
68b1d0c
Merge branch 'main' of https://github.com/dimagi/dimagi-qa-sureadhere…
kbo001 Nov 13, 2025
67bedf1
QA-8162 some testcases for staff tab
kbo001 Nov 17, 2025
34208ad
QA-8162 renamed params
kbo001 Nov 17, 2025
5930562
QA-8162 little fixes
kbo001 Nov 25, 2025
6e99b81
QA-8162 added depends and fixed params
kbo001 Nov 26, 2025
bb8edc2
QA-8162 changed the logic for add staff
kbo001 Nov 27, 2025
a0c0a4a
QA-8162 updated testcases for staff and the parallel execution value
kbo001 Nov 27, 2025
fa16457
QA-8162 added rerun handlings
kbo001 Nov 27, 2025
c1be8fb
QA-8162 reduced length of staff name
kbo001 Nov 28, 2025
3fbc7b3
QA-8162 little changes to staff tests
kbo001 Nov 28, 2025
7a97e23
QA-8162 modified login exception
kbo001 Nov 28, 2025
78d23f5
QA-8162 added missing declaration
kbo001 Dec 1, 2025
d8b6dca
QA-8162 added new utility to wait_for_text
kbo001 Dec 1, 2025
a3de01e
QA-8162 updated locators of all tabs
kbo001 Dec 1, 2025
c87498f
Merge branch 'main' of https://github.com/dimagi/dimagi-qa-sureadhere…
kbo001 Dec 1, 2025
28b2f56
QA-8162 reverted the base page, added new fixture
kbo001 Dec 1, 2025
416e121
QA-8162 separated test classes for the idle TCs
kbo001 Dec 1, 2025
e315f05
QA-8162 increase parallel threads for extended tests
kbo001 Dec 1, 2025
d9a617e
QA-8162 replaced idle_time with time.sleep
kbo001 Dec 2, 2025
17e47ec
QA-8162 added 3 more staff TCs
kbo001 Dec 8, 2025
7b0d064
QA-8162 resolved conflicts
kbo001 Dec 10, 2025
979c133
QA-8162 added new testcases and new test module
kbo001 Dec 11, 2025
d5b981e
QA-8162 added login step
kbo001 Dec 11, 2025
c2e0aa3
QA-8162 added 4 new staff role TCs
kbo001 Dec 12, 2025
573c0c4
QA-8162 added 1 more TC
kbo001 Dec 12, 2025
da3a225
QA-8162 increased wait time
kbo001 Dec 12, 2025
08c10cf
QA-8162 updated patient names
kbo001 Dec 12, 2025
bf0fe03
QA-8162 updated fill patient form parameters
kbo001 Dec 12, 2025
d28e262
QA-8162 fixes for module 7
kbo001 Dec 12, 2025
58b9075
QA-8162 login page handled
kbo001 Dec 12, 2025
1d30080
QA-8162 fixes for search staff
kbo001 Dec 12, 2025
ca481c6
QA-8162 adjusting parameters
kbo001 Dec 13, 2025
6eb4239
QA-8162 fix for staff failures
kbo001 Dec 13, 2025
417b535
QA-8162 more fixes for staff failures
kbo001 Dec 13, 2025
67d5e87
QA-8162 some more fixes for staff failures
kbo001 Dec 13, 2025
ae85fdc
QA-8162 another fix for staff failures
kbo001 Dec 13, 2025
48972f6
QA-8162 updated steps for staff testcases
kbo001 Dec 13, 2025
e903f0e
QA-8162 updated login function
kbo001 Dec 13, 2025
45f8ce7
QA-8162 updated staff functions
kbo001 Dec 13, 2025
b288693
QA-8162 added the remaining TC
kbo001 Dec 13, 2025
a6d8893
QA-8162 exception handled for TC 1
kbo001 Dec 13, 2025
eab97d1
QA-8162 fix for staff tcs
kbo001 Dec 13, 2025
bc8c515
QA-8162 more fixes for staff tcs
kbo001 Dec 13, 2025
7afc6b4
QA-8162 exception for edit access
kbo001 Dec 13, 2025
7f0b139
QA-8162 more fixes
kbo001 Dec 13, 2025
d65a51b
QA-8162 more fixes 2
kbo001 Dec 15, 2025
e993768
QA-8162 reverted steps
kbo001 Dec 15, 2025
08a1c6f
QA-8162 updated search staff function
kbo001 Dec 15, 2025
84254b4
QA-8162 fixing old functions
kbo001 Dec 15, 2025
3cdeb8f
QA-8162 resolved conflict
kbo001 Dec 15, 2025
2a9f15e
QA-8162 name correction
kbo001 Dec 15, 2025
b109a73
QA-8162 updated params and utilities
kbo001 Dec 15, 2025
922f615
QA-8162 corrected params
kbo001 Dec 15, 2025
8bb016f
QA-8162 steps changed for staff search
kbo001 Dec 15, 2025
7b51eff
QA-8162 condition for name search
kbo001 Dec 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/workflows/sa-workflows-extended.yml
Original file line number Diff line number Diff line change
Expand Up @@ -335,4 +335,3 @@ jobs:
convert_markdown: true
attachments: sbase-extendedtests-artifacts-${{ matrix.environment }}.zip
in_reply_to: ${{ fromJSON(steps.configure_email.outputs.result).reference }}

1 change: 1 addition & 0 deletions .github/workflows/sa-workflows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ jobs:
DIMAGIQA_ADMIN_PASSWORD: ${{ secrets.DIMAGIQA_ADMIN_PASSWORD }}
DIMAGIQA_BS_USER: ${{ secrets.DIMAGIQA_BS_USER }}
DIMAGIQA_BS_KEY: ${{ secrets.DIMAGIQA_BS_KEY }}
DIMAGIQA_SA_IMAP_PASSWORD: ${{ secrets.DIMAGIQA_SA_IMAP_PASSWORD }}

run: |
echo "client_payload: ${{ toJson(github.event.client_payload) }}"
Expand Down
7 changes: 6 additions & 1 deletion common_utilities/base_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from typing import Dict, Any, Iterable, List, Tuple, Optional
import platform
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import StaleElementReferenceException, TimeoutException
from selenium.common.exceptions import StaleElementReferenceException, TimeoutException, NoSuchFrameException
from selenium.common.exceptions import ElementClickInterceptedException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
Expand Down Expand Up @@ -590,6 +590,11 @@ def type(self, logical_name: str, value: str, timeout: int = CLICK_TIMEOUT):
# self.sb.highlight(sel)
self.sb.type(sel, value)

def idle_wait(self, idle_time=300):
print(f"⏳ Simulating {idle_time / 60} minutes of inactivity...")
for i in range(idle_time // 60):
time.sleep(60)
print(f" ... {i + 1} minute(s) passed")

def type_and_trigger(self, logical_name: str, text: str, *,
timeout: int = 15, blur: bool = True, clear_first: bool = True):
Expand Down
6 changes: 3 additions & 3 deletions common_utilities/load_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ def _load_from_env() -> dict:
env_keys = [
"url", "admin_username", "admin_password",
"login_username", "login_password",
"bs_user", "bs_key",
"bs_user", "bs_key", "sa_imap_password",
]
s = {}
for k in env_keys:
Expand Down Expand Up @@ -109,7 +109,7 @@ def _load_from_file() -> dict:
env_keys = [
"url", "admin_username", "admin_password",
"login_username", "login_password",
"bs_user", "bs_key",
"bs_user", "bs_key", "sa_imap_password"
]
s = {k: defaults.get(k) for k in env_keys if defaults.get(k) is not None}
base_url = defaults.get("url")
Expand Down Expand Up @@ -211,7 +211,7 @@ def load_settings() -> dict:
s["CI"] = "true"
missing = []
# url + login creds always required
for k in ("url", "login_username", "login_password"):
for k in ("url", "login_username", "login_password", "sa_imap_password"):
if not s.get(k):
missing.append(f"DIMAGIQA_{k.upper()}")

Expand Down
18 changes: 17 additions & 1 deletion common_utilities/self_healing_locators/login.json
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
"text": "Welcome! Sign in with SSO Email Address Password Forgot your password? Sign in",
"xpath": "//div[contains(normalize-space(text()), 'Welcome!\nSign in with SSO\nEmail Address\nPassword\nForgot your password?\nSign in')]"
},
"h1_Welcome!_29": {
"h1_Welcome": {
"class": "text-center",
"tag": "h1",
"text": "Welcome!",
Expand Down Expand Up @@ -278,5 +278,21 @@
"id": "createAccount",
"tag": "a",
"xpath": "//a[@id='createAccount']"
},
"invalid_email_password_error": {
"class": "error pageLevel",
"role": "alert",
"aria-hidden": "true",
"tag": "div",
"text": "INVALID EMAIL OR PASSWORD. PLEASE TRY AGAIN.",
"xpath": "//div[@class='error pageLevel']"
},
"account_blocked_error": {
"class": "error pageLevel",
"role": "alert",
"aria-hidden": "true",
"tag": "div",
"text": "YOUR ACCOUNT IS TEMPORARILY LOCKED TO PREVENT UNAUTHORIZED USE. TRY AGAIN LATER.",
"xpath": "//div[@class='error pageLevel'][(normalize-space(text())='YOUR ACCOUNT IS TEMPORARILY LOCKED TO PREVENT UNAUTHORIZED USE. TRY AGAIN LATER.']"
}
}
Loading
Loading