Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
<!-- RESULTS-TABLE:START -->
| Image | Linux `amd64` | Linux `arm64` | Windows `amd64` | Branch | Last Updated | Mobile Tests |
|---|---|---|---|---|---|---|
| [`latest`](https://github.com/orgs/TestlumFramework/packages/container/package/testlum) | [✅](https://github.com/TestlumFramework/Demo/actions/runs/25097640154) | [✅](https://github.com/TestlumFramework/Demo/actions/runs/25097640154) | [✅](https://github.com/TestlumFramework/Demo/actions/runs/25097640154) | [`main`](https://github.com/TestlumFramework/Demo/tree/main) | 2026/04/23 | ➖ |
| [`1.0.2`](https://github.com/orgs/TestlumFramework/packages/container/package/testlum) | [✅](https://github.com/TestlumFramework/Demo/actions/runs/25097640154) | [✅](https://github.com/TestlumFramework/Demo/actions/runs/25097640154) | [✅](https://github.com/TestlumFramework/Demo/actions/runs/25097640154) | [`v1.0.2`](https://github.com/TestlumFramework/Demo/tree/v1.0.2) | 2026/04/14 | ➖ |
| [`1.1.0`](https://github.com/orgs/TestlumFramework/packages/container/package/testlum) | [✅](https://github.com/TestlumFramework/Demo/actions/runs/25097640154) | [✅](https://github.com/TestlumFramework/Demo/actions/runs/25097640154) | [✅](https://github.com/TestlumFramework/Demo/actions/runs/25097640154) | [`main`](https://github.com/TestlumFramework/Demo/tree/main) | 2026/04/23 | ➖ |
| [`latest`](https://github.com/orgs/TestlumFramework/packages/container/package/testlum) | [✅](https://github.com/TestlumFramework/Demo/actions/runs/25150694090) | [✅](https://github.com/TestlumFramework/Demo/actions/runs/25150694090) | [✅](https://github.com/TestlumFramework/Demo/actions/runs/25150694090) | [`main`](https://github.com/TestlumFramework/Demo/tree/main) | 2026/04/23 | ➖ |
| [`1.0.2`](https://github.com/orgs/TestlumFramework/packages/container/package/testlum) | [✅](https://github.com/TestlumFramework/Demo/actions/runs/25150694090) | [✅](https://github.com/TestlumFramework/Demo/actions/runs/25150694090) | [✅](https://github.com/TestlumFramework/Demo/actions/runs/25150694090) | [`v1.0.2`](https://github.com/TestlumFramework/Demo/tree/v1.0.2) | 2026/04/14 | ➖ |
| [`1.1.0`](https://github.com/orgs/TestlumFramework/packages/container/package/testlum) | [✅](https://github.com/TestlumFramework/Demo/actions/runs/25150694090) | [✅](https://github.com/TestlumFramework/Demo/actions/runs/25150694090) | [✅](https://github.com/TestlumFramework/Demo/actions/runs/25150694090) | [`main`](https://github.com/TestlumFramework/Demo/tree/main) | 2026/04/23 | ➖ |
<!-- RESULTS-TABLE:END -->

A comprehensive end-to-end testing application that serves as both a test target and a validation suite for the [Testlum](https://github.com/TestlumFramework/Testlum) testing framework.
Expand Down
2 changes: 1 addition & 1 deletion REGRESSION/resources/config-ci-regression.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

<runScenariosByTag enabled="true">
<tag name="web" enabled="true"/>
<tag name="mobilebrowser" enabled="false"/>
<tag name="mobilebrowser" enabled="true"/>
<tag name="mobilebrowser-healthcheck" enabled="false"/>
<tag name="native" enabled="false"/>
<tag name="native-healthcheck" enabled="false"/>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
navigateComment,path,inputComment,locator,value,clearComment,assertComment,notEqualComment
Navigate to forms page,/forms,Enter value into field,forms.username,TestUser,Clear field,Verify clear execution,Value should not equal predefined string
webComment,navigateComment,path,inputComment,inputLocator,value,clearComment,waitComment,waitTime,resultLocator,assertComment
Start WEB script,Navigate to UI Elements,/ui-elements,Enter value,uiElements.clearInput,TestUser,Clear field,Wait after clear,1,uiElements.clearResult,Verify clear execution
8 changes: 8 additions & 0 deletions REGRESSION/resources/locators/pages/browser/uiElements.xml
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,14 @@
<locator locatorId="waitClickable">
<cssSelector>[data-test='wait-clickable']</cssSelector>
</locator>

<locator locatorId="clearInput">
<cssSelector>[data-test='clear-input']</cssSelector>
</locator>

<locator locatorId="clearResult">
<cssSelector>[data-test='clear-result']</cssSelector>
</locator>
</locators>

</page>
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<scenario xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.knubisoft.com/testlum/testing/model/scenario"
xsi:schemaLocation="http://www.knubisoft.com/testlum/testing/model/scenario scenario.xsd">

<overview>
<name>Assert Alert - Condition</name>
<description>
This scenario verifies conditional execution of alert assertion.

Test flow:
1. Trigger alert.
2. Execute assert with condition=true.
3. Execute assert with condition=false (should be skipped).
4. Close alert.

This scenario validates:
- Condition handling
- Skipping logic
- Alert lifecycle
</description>
</overview>

<settings>
<tags>mobilebrowser</tags>
</settings>

<include comment="Include login steps" scenario="/ui/includes/login_mobile_browser/scenario.xml"/>

<mobilebrowser comment="Start WEB script">

<condition comment="Create true condition (should execute)"
name="trueCondition"
spel="true"/>

<condition comment="Create false condition (should skip)"
name="falseCondition"
spel="false"/>

<navigate comment="Navigate to modal page"
command="to"
path="/modal"/>

<click comment="Click alert button"
locator="modal.alertBtn"/>

<wait comment="Wait for alert to appear" time="1"/>

<assert comment="Assert should execute"
condition="trueCondition">
<alert comment="Check alert text">
<text>Alert! You are not Nazar</text>
</alert>
</assert>

<assert comment="Assert should NOT execute"
condition="falseCondition">
<alert comment="Invalid text but skipped">
<text>INVALID</text>
</alert>
</assert>

</mobilebrowser>

</scenario>
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<scenario xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.knubisoft.com/testlum/testing/model/scenario"
xsi:schemaLocation="http://www.knubisoft.com/testlum/testing/model/scenario scenario.xsd">

<overview>
<name>Assert Alert - General</name>
<description>
This scenario verifies alert assertion in mobile browser.

Test flow:
1. Navigate to modal page.
2. Trigger alert.
3. Verify alert text.
4. Close alert.

This scenario validates:
- Alert appearance
- Alert text verification
- Alert lifecycle handling
</description>
</overview>

<settings>
<tags>mobilebrowser</tags>
</settings>

<include comment="Include login steps" scenario="/ui/includes/login_mobile_browser/scenario.xml"/>

<mobilebrowser comment="Start MOBILE BROWSER script">

<navigate comment="Navigate to modal page"
command="to"
path="/modal"/>

<click comment="Click button to open alert"
locator="modal.alertBtn"/>

<wait comment="Wait for alert to appear" time="1"/>

<assert comment="Verify alert text">
<alert comment="Check alert equals expected">
<text>Alert! You are not Nazar</text>
</alert>
</assert>

</mobilebrowser>

</scenario>
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<scenario xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.knubisoft.com/testlum/testing/model/scenario"
xsi:schemaLocation="http://www.knubisoft.com/testlum/testing/model/scenario scenario.xsd">

<overview>
<name>Assert Alert - Repeat Times</name>
<description>
This scenario verifies repeated alert execution in mobile browser.

Test flow:
1. Repeat alert trigger and validation multiple times.
2. Verify alert text on each iteration.
3. Close alert after each iteration.

This scenario validates:
- Stable repeated execution
- Alert lifecycle handling
</description>
</overview>

<settings>
<tags>mobilebrowser</tags>
</settings>

<include comment="Include login steps" scenario="/ui/includes/login_mobile_browser/scenario.xml"/>

<mobilebrowser comment="Start MOBILE BROWSER script">

<navigate comment="Navigate to modal page"
command="to"
path="/modal"/>

<click comment="Trigger alert"
locator="modal.alertBtn"/>

<wait comment="Wait for alert" time="1"/>

<repeat comment="Repeat alert test 2 times" times="2">

<assert comment="Verify alert">
<alert comment="Check alert text">
<text>Alert! You are not Nazar</text>
</alert>
</assert>

</repeat>

</mobilebrowser>

</scenario>
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
<scenario xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.knubisoft.com/testlum/testing/model/scenario"
xsi:schemaLocation="http://www.knubisoft.com/testlum/testing/model/scenario scenario.xsd">

<overview>
<name>Assert Alert - Variable</name>
<description>
This scenario verifies alert assertion using variables in mobile browser.

Test flow:
1. Store navigation path, locator, comments, and expected text in variables.
2. Navigate to modal page.
3. Trigger alert using variable locator.
4. Verify alert text using variable.
5. Close alert.

This scenario validates:
- Full variable injection
- Dynamic locator and comment usage
- Alert text validation via variables
- Alert lifecycle handling
</description>
</overview>

<settings>
<tags>mobilebrowser</tags>
</settings>

<include comment="Include login steps" scenario="/ui/includes/login_mobile_browser/scenario.xml"/>

<mobilebrowser comment="Start MOBILE BROWSER script">

<var comment="Store navigation path" name="path">
<constant value="/modal"/>
</var>

<var comment="Store alert button locator" name="buttonLocator">
<constant value="modal.alertBtn"/>
</var>

<var comment="Store expected alert text" name="expectedText">
<constant value="Alert! You are not Nazar"/>
</var>

<var comment="Store assert block comment" name="assertComment">
<constant value="Verify alert using variables"/>
</var>

<var comment="Store alert assertion comment" name="alertComment">
<constant value="Check alert text"/>
</var>

<var comment="Store navigate comment" name="navigateComment">
<constant value="Navigate to modal page using variable"/>
</var>

<var comment="Store click comment" name="clickComment">
<constant value="Click alert button using variable locator"/>
</var>

<var comment="Store wait comment" name="waitComment">
<constant value="Wait for alert to appear"/>
</var>

<var comment="Store cleanup comment" name="cleanupComment">
<constant value="Accept alert to close it"/>
</var>

<navigate comment="{{navigateComment}}"
command="to"
path="{{path}}"/>

<click comment="{{clickComment}}"
locator="{{buttonLocator}}"/>

<wait comment="{{waitComment}}" time="1"/>

<assert comment="{{assertComment}}">
<alert comment="{{alertComment}}">
<text>{{expectedText}}</text>
</alert>
</assert>

</mobilebrowser>

</scenario>
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<scenario xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.knubisoft.com/testlum/testing/model/scenario"
xsi:schemaLocation="http://www.knubisoft.com/testlum/testing/model/scenario scenario.xsd">

<overview>
<name>Assert Alert - Variations</name>
<description>
This scenario verifies alert assertion using CSV-driven variations in mobile browser.

Test flow:
1. Load variations from CSV.
2. Navigate to page.
3. Trigger alert.
4. Verify alert text.
5. Close alert.

This scenario validates:
- CSV-based injection
- Dynamic execution
- Alert lifecycle handling
</description>
</overview>

<settings>
<variations>alert_variations.csv</variations>
<tags>mobilebrowser</tags>
</settings>

<include comment="Include login steps" scenario="/ui/includes/login_mobile_browser/scenario.xml"/>

<mobilebrowser comment="Start MOBILE BROWSER script">

<navigate comment="{{navigateComment}}"
command="to"
path="{{path}}"/>

<click comment="{{clickComment}}"
locator="{{clickLocator}}"/>

<wait comment="{{waitComment}}" time="1"/>

<assert comment="{{assertComment}}">
<alert comment="{{alertComment}}">
<text>{{expectedText}}</text>
</alert>
</assert>

</mobilebrowser>

</scenario>
Loading