From 6c9f939364baf9ce539b03e19fbe796c37e53ada Mon Sep 17 00:00:00 2001 From: pooja Date: Mon, 20 Jul 2026 13:27:04 +0400 Subject: [PATCH 01/13] Add airplane mode toggles to Maestro flows. --- .maestro/flows/001_002_add_user_direct_test.yaml | 2 ++ .../003_admin_user_assigns_assignment_to_a_class_test.yaml | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/.maestro/flows/001_002_add_user_direct_test.yaml b/.maestro/flows/001_002_add_user_direct_test.yaml index 4a97406bc..f0e1a0c6d 100644 --- a/.maestro/flows/001_002_add_user_direct_test.yaml +++ b/.maestro/flows/001_002_add_user_direct_test.yaml @@ -41,6 +41,7 @@ onFlowComplete: - assertVisible: id: "app_title" text: "People" +- setAirplaneMode: enabled - tapOn: id: "ExpandableFab" # +Person button - tapOn: "Add new person" @@ -177,6 +178,7 @@ onFlowComplete: id: "app_title" text: "ParentA User" - tapOn: "Child User" +- setAirplaneMode: disabled - assertVisible: id: "app_title" text: "Child User" diff --git a/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml b/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml index f5488f81e..9534b1b9b 100644 --- a/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml +++ b/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml @@ -42,6 +42,7 @@ onFlowComplete: id: "app_title" text: "Classes" - assertVisible: "TestClass" +- setAirplaneMode: enabled - tapOn: "Assignments" - tapOn: id: "floating_action_button" # +Assignment button @@ -110,6 +111,7 @@ onFlowComplete: - assertVisible: "Statement Maker" - assertVisible: "Assignment Result Statement Demo" - assertVisible: "Average" +- setAirplaneMode: disabled - tapOn: "Assignments" - assertVisible: id: "app_title" @@ -128,6 +130,7 @@ onFlowComplete: PASSWORD: "test123" - tapOn: "Assignments" - tapOn: "Homework 1" +- setAirplaneMode: enabled - assertVisible: id: "app_title" text: "Homework 1" @@ -148,6 +151,7 @@ onFlowComplete: - tapOn: "Send statement" - assertVisible: "Statement sent.*" - tapOn: "Close" +- setAirplaneMode: disabled - tapOn: "Assignments" - tapOn: "Homework 1" - assertVisible: "All (2)" From 7082da85db59d039c85efbcb18408fc809185364 Mon Sep 17 00:00:00 2001 From: pooja Date: Mon, 20 Jul 2026 13:56:35 +0400 Subject: [PATCH 02/13] Update the admin assignment Maestro flow to include navigation steps and lesson assertions. --- ...dmin_user_assigns_assignment_to_a_class_test.yaml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml b/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml index 9534b1b9b..ca97d7c0e 100644 --- a/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml +++ b/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml @@ -36,7 +36,17 @@ onFlowComplete: env: USERNAME: "teacherauser" PASSWORD: "test123" -- assertVisible: "Apps" +- tapOn: "Apps" +- assertVisible: + id: "app_title" + text: "Apps" +- tapOn: "Example Web App" +- tapOn: "Lessons" +- tapOn: "Examples" +- assertVisible: "Lesson 001" +- assertVisible: "Statement Maker" +- assertVisible: "JS Tetris" +- assertVisible: "Assignment Result Statement Demo" - tapOn: "Classes" - assertVisible: id: "app_title" From fe5d551b1d4f9cc4cb480d15182c4c789b5d09ec Mon Sep 17 00:00:00 2001 From: pooja Date: Mon, 20 Jul 2026 14:11:07 +0400 Subject: [PATCH 03/13] Add a tap action on "Apps" to the `003_admin_user_assigns_assignment_to_a_class_test.yaml` Maestro flow. --- .../flows/003_admin_user_assigns_assignment_to_a_class_test.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml b/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml index ca97d7c0e..5c3fc1367 100644 --- a/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml +++ b/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml @@ -47,6 +47,7 @@ onFlowComplete: - assertVisible: "Statement Maker" - assertVisible: "JS Tetris" - assertVisible: "Assignment Result Statement Demo" +- tapOn: "Apps" - tapOn: "Classes" - assertVisible: id: "app_title" From 4e84b14cb3605a80f2bc60bc184aa0d16eaa8c31 Mon Sep 17 00:00:00 2001 From: pooja Date: Mon, 20 Jul 2026 16:49:19 +0400 Subject: [PATCH 04/13] Add `e2e` tag to Maestro flows and update CI script to only run tests with that tag. --- ...03_admin_user_assigns_assignment_to_a_class_test.yaml | 9 ++++++++- ci-run-maestro.sh | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml b/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml index 5c3fc1367..0660c3827 100644 --- a/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml +++ b/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml @@ -1,4 +1,6 @@ appId: world.respect.app +tags: + - "e2e" onFlowStart: - clearState: world.respect.app - runScript: @@ -107,6 +109,12 @@ onFlowComplete: - tapOn: "Examples" - tapOn: "Assignment Result Statement Demo" - tapOn: "Save" +- assertVisible: + id: "app_title" + text: "Homework 1" +- setAirplaneMode: disabled +- tapOn: "Assignments" +- tapOn: "Homework 1" - assertVisible: id: "app_title" text: "Homework 1" @@ -122,7 +130,6 @@ onFlowComplete: - assertVisible: "Statement Maker" - assertVisible: "Assignment Result Statement Demo" - assertVisible: "Average" -- setAirplaneMode: disabled - tapOn: "Assignments" - assertVisible: id: "app_title" diff --git a/ci-run-maestro.sh b/ci-run-maestro.sh index 627d1ab0f..83b76e543 100755 --- a/ci-run-maestro.sh +++ b/ci-run-maestro.sh @@ -160,6 +160,7 @@ if [ "$1" == "cloud" ]; then --project-id=$MAESTRO_CLOUD_PROJECTID \ --app-file=./respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk \ --flows=.maestro/flows \ + --include-tags=e2e \ $DEVICE_OS_ARG \ --format=junit \ --output=build/maestro/report.xml \ From fef816c36e274ba4db598124042277d15a924608 Mon Sep 17 00:00:00 2001 From: pooja Date: Mon, 20 Jul 2026 17:40:00 +0400 Subject: [PATCH 05/13] Remove `setAirplaneMode` commands from the admin assignment Maestro flow. --- .../003_admin_user_assigns_assignment_to_a_class_test.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml b/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml index 0660c3827..f44024940 100644 --- a/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml +++ b/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml @@ -148,7 +148,6 @@ onFlowComplete: PASSWORD: "test123" - tapOn: "Assignments" - tapOn: "Homework 1" -- setAirplaneMode: enabled - assertVisible: id: "app_title" text: "Homework 1" @@ -169,7 +168,6 @@ onFlowComplete: - tapOn: "Send statement" - assertVisible: "Statement sent.*" - tapOn: "Close" -- setAirplaneMode: disabled - tapOn: "Assignments" - tapOn: "Homework 1" - assertVisible: "All (2)" From 2a003b868088cddb01a2fc372ca147a1e03daa89 Mon Sep 17 00:00:00 2001 From: pooja Date: Tue, 21 Jul 2026 09:45:36 +0400 Subject: [PATCH 06/13] Remove `e2e` tags from Maestro flows and update `ci-run-maestro.sh` to include all tests. --- .../003_admin_user_assigns_assignment_to_a_class_test.yaml | 2 -- ci-run-maestro.sh | 1 - 2 files changed, 3 deletions(-) diff --git a/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml b/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml index f44024940..c4983ef0e 100644 --- a/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml +++ b/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml @@ -1,6 +1,4 @@ appId: world.respect.app -tags: - - "e2e" onFlowStart: - clearState: world.respect.app - runScript: diff --git a/ci-run-maestro.sh b/ci-run-maestro.sh index 83b76e543..627d1ab0f 100755 --- a/ci-run-maestro.sh +++ b/ci-run-maestro.sh @@ -160,7 +160,6 @@ if [ "$1" == "cloud" ]; then --project-id=$MAESTRO_CLOUD_PROJECTID \ --app-file=./respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk \ --flows=.maestro/flows \ - --include-tags=e2e \ $DEVICE_OS_ARG \ --format=junit \ --output=build/maestro/report.xml \ From 4f0713e31d731ca2c3b0a24daba55038bffed9c3 Mon Sep 17 00:00:00 2001 From: pooja Date: Tue, 21 Jul 2026 11:30:16 +0400 Subject: [PATCH 07/13] Comment out NVM setup and node version switching in the Cypress CI script. --- .maestro/video-downloader/ci-run-cypress.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.maestro/video-downloader/ci-run-cypress.sh b/.maestro/video-downloader/ci-run-cypress.sh index 9f74dfacc..be17d72e9 100755 --- a/.maestro/video-downloader/ci-run-cypress.sh +++ b/.maestro/video-downloader/ci-run-cypress.sh @@ -17,14 +17,14 @@ mkdir -p "$DOWNLOAD_DIR" rm -f "$URL_FILE" # fresh run every time # ---- Run Cypress ------------------ -export NVM_DIR="/home/jenkins/.nvm" -source "$NVM_DIR/nvm.sh" - -nvm use 20.20.2 - -echo "Node version after switch:" -which node -node -v +#export NVM_DIR="/home/jenkins/.nvm" +#source "$NVM_DIR/nvm.sh" +# +#nvm use 20.20.2 +# +#echo "Node version after switch:" +#which node +#node -v echo "Installing dependencies..." npm install From 676fac60f5a633dd4249b88b9c1783376af6046f Mon Sep 17 00:00:00 2001 From: pooja Date: Tue, 21 Jul 2026 12:19:49 +0400 Subject: [PATCH 08/13] Uncomment Node.js version management commands in the Cypress CI script. --- .maestro/video-downloader/ci-run-cypress.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.maestro/video-downloader/ci-run-cypress.sh b/.maestro/video-downloader/ci-run-cypress.sh index be17d72e9..9f74dfacc 100755 --- a/.maestro/video-downloader/ci-run-cypress.sh +++ b/.maestro/video-downloader/ci-run-cypress.sh @@ -17,14 +17,14 @@ mkdir -p "$DOWNLOAD_DIR" rm -f "$URL_FILE" # fresh run every time # ---- Run Cypress ------------------ -#export NVM_DIR="/home/jenkins/.nvm" -#source "$NVM_DIR/nvm.sh" -# -#nvm use 20.20.2 -# -#echo "Node version after switch:" -#which node -#node -v +export NVM_DIR="/home/jenkins/.nvm" +source "$NVM_DIR/nvm.sh" + +nvm use 20.20.2 + +echo "Node version after switch:" +which node +node -v echo "Installing dependencies..." npm install From 268a0027d7651faf0b26f99b35477caeac2250ae Mon Sep 17 00:00:00 2001 From: pooja Date: Tue, 21 Jul 2026 13:17:02 +0400 Subject: [PATCH 09/13] Update Maestro flows to include a timestamp in the `NAME` parameter. --- .../flows/001_001_invite_users_using_qr_code_or_link_test.yaml | 2 +- .maestro/flows/001_002_add_user_direct_test.yaml | 2 +- .maestro/flows/001_003_login_using_school_link_test.yaml | 2 +- .maestro/flows/002_browse_lessons_test.yaml | 2 +- .../003_admin_user_assigns_assignment_to_a_class_test.yaml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml b/.maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml index 35402ec37..d0c1bb8a7 100644 --- a/.maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml +++ b/.maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml @@ -10,7 +10,7 @@ onFlowStart: SCHOOL_URL: ${SCHOOL_URL} SCHOOL_NAME: ${SCHOOL_NAME} URL_SUBSTITUTION: ${URL_SUBSTITUTION} - NAME: "001_001_invite_users_using_qr_code_or_link_test" + NAME: ${'001_001_invite_users_using_qr_code_or_link_test_' + Date.now()} onFlowComplete: - runFlow: diff --git a/.maestro/flows/001_002_add_user_direct_test.yaml b/.maestro/flows/001_002_add_user_direct_test.yaml index f0e1a0c6d..22bd385e7 100644 --- a/.maestro/flows/001_002_add_user_direct_test.yaml +++ b/.maestro/flows/001_002_add_user_direct_test.yaml @@ -10,7 +10,7 @@ onFlowStart: SCHOOL_URL: ${SCHOOL_URL} SCHOOL_NAME: ${SCHOOL_NAME} URL_SUBSTITUTION: ${URL_SUBSTITUTION} - NAME: "001_002_add_user_direct_test" + NAME: ${'001_002_add_user_direct_test_' + Date.now()} onFlowComplete: - runFlow: diff --git a/.maestro/flows/001_003_login_using_school_link_test.yaml b/.maestro/flows/001_003_login_using_school_link_test.yaml index 1bdae4c4e..c5f2e7fce 100644 --- a/.maestro/flows/001_003_login_using_school_link_test.yaml +++ b/.maestro/flows/001_003_login_using_school_link_test.yaml @@ -10,7 +10,7 @@ onFlowStart: SCHOOL_URL: ${SCHOOL_URL} SCHOOL_NAME: ${SCHOOL_NAME} URL_SUBSTITUTION: ${URL_SUBSTITUTION} - NAME: "001_003_login_using_school_link_test" + NAME: ${'001_003_login_using_school_link_test_' + Date.now()} onFlowComplete: - runFlow: diff --git a/.maestro/flows/002_browse_lessons_test.yaml b/.maestro/flows/002_browse_lessons_test.yaml index 66e71575d..c86703374 100644 --- a/.maestro/flows/002_browse_lessons_test.yaml +++ b/.maestro/flows/002_browse_lessons_test.yaml @@ -10,7 +10,7 @@ onFlowStart: SCHOOL_URL: ${SCHOOL_URL} SCHOOL_NAME: ${SCHOOL_NAME} URL_SUBSTITUTION: ${URL_SUBSTITUTION} - NAME: "002_browse_lessons_test" + NAME: ${'002_browse_lessons_test_' + Date.now()} onFlowComplete: - runFlow: diff --git a/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml b/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml index c4983ef0e..b94069c43 100644 --- a/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml +++ b/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml @@ -10,7 +10,7 @@ onFlowStart: SCHOOL_URL: ${SCHOOL_URL} SCHOOL_NAME: ${SCHOOL_NAME} URL_SUBSTITUTION: ${URL_SUBSTITUTION} - NAME: "003_admin_user_assigns_assignment_to_a_class_test" + NAME: ${'003_admin_user_assigns_assignment_to_a_class_test_' + Date.now()} onFlowComplete: - runFlow: From e7d872c34b6df330cef4465b246624b5167ec9a4 Mon Sep 17 00:00:00 2001 From: pooja Date: Tue, 21 Jul 2026 15:17:12 +0400 Subject: [PATCH 10/13] Replace dynamic timestamps with static strings for `NAME` variables in Maestro flows. --- .../flows/001_001_invite_users_using_qr_code_or_link_test.yaml | 2 +- .maestro/flows/001_002_add_user_direct_test.yaml | 2 +- .maestro/flows/001_003_login_using_school_link_test.yaml | 2 +- .maestro/flows/002_browse_lessons_test.yaml | 2 +- .../003_admin_user_assigns_assignment_to_a_class_test.yaml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml b/.maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml index d0c1bb8a7..aa3b56223 100644 --- a/.maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml +++ b/.maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml @@ -10,7 +10,7 @@ onFlowStart: SCHOOL_URL: ${SCHOOL_URL} SCHOOL_NAME: ${SCHOOL_NAME} URL_SUBSTITUTION: ${URL_SUBSTITUTION} - NAME: ${'001_001_invite_users_using_qr_code_or_link_test_' + Date.now()} + NAME: 001_001_invite_users_using_qr_code_or_link_test onFlowComplete: - runFlow: diff --git a/.maestro/flows/001_002_add_user_direct_test.yaml b/.maestro/flows/001_002_add_user_direct_test.yaml index 22bd385e7..4323f7101 100644 --- a/.maestro/flows/001_002_add_user_direct_test.yaml +++ b/.maestro/flows/001_002_add_user_direct_test.yaml @@ -10,7 +10,7 @@ onFlowStart: SCHOOL_URL: ${SCHOOL_URL} SCHOOL_NAME: ${SCHOOL_NAME} URL_SUBSTITUTION: ${URL_SUBSTITUTION} - NAME: ${'001_002_add_user_direct_test_' + Date.now()} + NAME: 001_002_add_user_direct_test onFlowComplete: - runFlow: diff --git a/.maestro/flows/001_003_login_using_school_link_test.yaml b/.maestro/flows/001_003_login_using_school_link_test.yaml index c5f2e7fce..0c158ee82 100644 --- a/.maestro/flows/001_003_login_using_school_link_test.yaml +++ b/.maestro/flows/001_003_login_using_school_link_test.yaml @@ -10,7 +10,7 @@ onFlowStart: SCHOOL_URL: ${SCHOOL_URL} SCHOOL_NAME: ${SCHOOL_NAME} URL_SUBSTITUTION: ${URL_SUBSTITUTION} - NAME: ${'001_003_login_using_school_link_test_' + Date.now()} + NAME: 001_003_login_using_school_link_test onFlowComplete: - runFlow: diff --git a/.maestro/flows/002_browse_lessons_test.yaml b/.maestro/flows/002_browse_lessons_test.yaml index c86703374..b9843174a 100644 --- a/.maestro/flows/002_browse_lessons_test.yaml +++ b/.maestro/flows/002_browse_lessons_test.yaml @@ -10,7 +10,7 @@ onFlowStart: SCHOOL_URL: ${SCHOOL_URL} SCHOOL_NAME: ${SCHOOL_NAME} URL_SUBSTITUTION: ${URL_SUBSTITUTION} - NAME: ${'002_browse_lessons_test_' + Date.now()} + NAME: 002_browse_lessons_test onFlowComplete: - runFlow: diff --git a/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml b/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml index b94069c43..42154aef7 100644 --- a/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml +++ b/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml @@ -10,7 +10,7 @@ onFlowStart: SCHOOL_URL: ${SCHOOL_URL} SCHOOL_NAME: ${SCHOOL_NAME} URL_SUBSTITUTION: ${URL_SUBSTITUTION} - NAME: ${'003_admin_user_assigns_assignment_to_a_class_test_' + Date.now()} + NAME: 003_admin_user_assigns_assignment_to_a_class_test onFlowComplete: - runFlow: From f46ad06f088358017b54da139781a813ac3c2ad8 Mon Sep 17 00:00:00 2001 From: pooja Date: Fri, 24 Jul 2026 13:42:34 +0400 Subject: [PATCH 11/13] Quote the `NAME` variable in Maestro flow configuration files. --- .../flows/001_001_invite_users_using_qr_code_or_link_test.yaml | 2 +- .maestro/flows/001_002_add_user_direct_test.yaml | 2 +- .maestro/flows/001_003_login_using_school_link_test.yaml | 2 +- .maestro/flows/002_browse_lessons_test.yaml | 2 +- .../003_admin_user_assigns_assignment_to_a_class_test.yaml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml b/.maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml index ef67c052d..4f03f9da7 100644 --- a/.maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml +++ b/.maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml @@ -10,7 +10,7 @@ onFlowStart: SCHOOL_URL: ${SCHOOL_URL} SCHOOL_NAME: ${SCHOOL_NAME} URL_SUBSTITUTION: ${URL_SUBSTITUTION} - NAME: 001_001_invite_users_using_qr_code_or_link_test + NAME: "001_001_invite_users_using_qr_code_or_link_test" onFlowComplete: - runFlow: diff --git a/.maestro/flows/001_002_add_user_direct_test.yaml b/.maestro/flows/001_002_add_user_direct_test.yaml index ef1c7bade..4cce41fe2 100644 --- a/.maestro/flows/001_002_add_user_direct_test.yaml +++ b/.maestro/flows/001_002_add_user_direct_test.yaml @@ -10,7 +10,7 @@ onFlowStart: SCHOOL_URL: ${SCHOOL_URL} SCHOOL_NAME: ${SCHOOL_NAME} URL_SUBSTITUTION: ${URL_SUBSTITUTION} - NAME: 001_002_add_user_direct_test + NAME: "001_002_add_user_direct_test" onFlowComplete: - runFlow: diff --git a/.maestro/flows/001_003_login_using_school_link_test.yaml b/.maestro/flows/001_003_login_using_school_link_test.yaml index ff72d74ef..13694c85b 100644 --- a/.maestro/flows/001_003_login_using_school_link_test.yaml +++ b/.maestro/flows/001_003_login_using_school_link_test.yaml @@ -12,7 +12,7 @@ onFlowStart: SCHOOL_URL: ${SCHOOL_URL} SCHOOL_NAME: ${SCHOOL_NAME} URL_SUBSTITUTION: ${URL_SUBSTITUTION} - NAME: 001_003_login_using_school_link_test + NAME: "001_003_login_using_school_link_test" onFlowComplete: - runFlow: diff --git a/.maestro/flows/002_browse_lessons_test.yaml b/.maestro/flows/002_browse_lessons_test.yaml index 094a6e8cb..9501f3d2e 100644 --- a/.maestro/flows/002_browse_lessons_test.yaml +++ b/.maestro/flows/002_browse_lessons_test.yaml @@ -12,7 +12,7 @@ onFlowStart: SCHOOL_URL: ${SCHOOL_URL} SCHOOL_NAME: ${SCHOOL_NAME} URL_SUBSTITUTION: ${URL_SUBSTITUTION} - NAME: 002_browse_lessons_test + NAME: "002_browse_lessons_test" onFlowComplete: - runFlow: diff --git a/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml b/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml index fdf8d291a..61fb9ede9 100644 --- a/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml +++ b/.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml @@ -10,7 +10,7 @@ onFlowStart: SCHOOL_URL: ${SCHOOL_URL} SCHOOL_NAME: ${SCHOOL_NAME} URL_SUBSTITUTION: ${URL_SUBSTITUTION} - NAME: 003_admin_user_assigns_assignment_to_a_class_test + NAME: "003_admin_user_assigns_assignment_to_a_class_test" onFlowComplete: - runFlow: From 51b9b38169793ad81d77889d59833c0b26ccc244 Mon Sep 17 00:00:00 2001 From: pooja Date: Fri, 24 Jul 2026 14:04:06 +0400 Subject: [PATCH 12/13] Update the Maestro documentation to include offline mode steps and detailed verification flows for user creation and assignment management. --- .maestro/README.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/.maestro/README.md b/.maestro/README.md index c47016118..c6a773115 100644 --- a/.maestro/README.md +++ b/.maestro/README.md @@ -88,12 +88,12 @@ export MAESTRO_EXTRA_ARGS=" --include-tags=basic " ### 001_002_add_user_direct_test 1. Admin logs into the app -2. Admin adds a new user directly (Parent user) +2. Admin adds a new user directly (Parent user) in offline mode 3. Verify "Family member" field is not visible when role is changed to Teacher 4. Validate "Edit" button functionality 5. Validate mandatory fields and input constraints 6. Add child user via Family member → Add person screen -7. Create account for Parent user (username, password) +7. Device back to online mode, then user Create account for Parent user (username, password) 8. Create account for Child user (username, assign/manage QR code badge, set password) 9. Create a student user for QR code validation 10. Validate login, password change, and child mode access @@ -125,10 +125,14 @@ export MAESTRO_EXTRA_ARGS=" --include-tags=basic " --- ### 003_admin_user_assigns_assignment_to_a_class_test -1. Admin setup includes app, class and teacher creation -2. Teacher logs in and accesses class -3. Teacher creates a new assignment -4. Assignment is linked with lesson content -5. Assignment is saved and verified in class +1. Admin sets up the school by adding an app, creating a class, and adding a teacher and students. +2. Teacher logs in and verifies the available app and lesson content. +3. In Offline mode - Teacher creates an assignment for the class with title, description, due date/time, and tasks. +4. Teacher goes back online and verifies the assignment details, assigned class, students, and linked tasks. +5. Student A completes all assignment activities and submits xAPI statements. +6. Student B partially completes the assignment by submitting one activity. +7. Teacher verifies assignment progress, completion statistics, student results, and average scores. +8. Teacher validates the generated xAPI statement details, including the raw xAPI statement. +9. Teacher edits the assignment title and verifies the update. --- From 2d00b9fc747435fb4c52a5200c618df89208e276 Mon Sep 17 00:00:00 2001 From: pooja Date: Fri, 24 Jul 2026 14:08:18 +0400 Subject: [PATCH 13/13] Update the `002_browse_lessons_test` documentation in the Maestro README to include offline mode, downloading lessons, and statement submission. --- .maestro/README.md | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/.maestro/README.md b/.maestro/README.md index c6a773115..a86608e46 100644 --- a/.maestro/README.md +++ b/.maestro/README.md @@ -84,6 +84,7 @@ export MAESTRO_EXTRA_ARGS=" --include-tags=basic " 5. Teacher approves student → student joins class 6. Teacher generates parent invite link to join class 7. Parent joins using link → adds child to class + --- ### 001_002_add_user_direct_test @@ -98,6 +99,7 @@ export MAESTRO_EXTRA_ARGS=" --include-tags=basic " 9. Create a student user for QR code validation 10. Validate login, password change, and child mode access 11. Verify QR-based login for student + --- ### 001_003_login_using_school_link_test @@ -106,6 +108,7 @@ export MAESTRO_EXTRA_ARGS=" --include-tags=basic " 3. Enter valid school URL 4. Perform login with credentials 5. Verify successful access to the app + --- ### 001_005_add_school_self_registration_test @@ -114,14 +117,19 @@ export MAESTRO_EXTRA_ARGS=" --include-tags=basic " 3. Creates system administrator account 4. Logs into newly created school 5. Verifies profile and logout/login flow + --- ### 002_browse_lessons_test -1. Admin logs in to the App -2. Adds app using external manifest link -3. Verifies app is added successfully -4. Opens app and browses lessons -5. Opens and validates a lesson content +1. Admin logs into the app. +2. Adds an app using an external manifest link. +3. Verifies the app is added successfully. +4. Browses the available lessons and validates lesson content. +5. Downloads a lesson/activity for offline use. +6. In offline mode user verifies the downloaded lesson can be accessed and completed without network connectivity. +7. Submits a statement from the downloaded lesson and verifies successful submission. +8. Returns online and verifies the app remains accessible. + --- ### 003_admin_user_assigns_assignment_to_a_class_test @@ -134,5 +142,6 @@ export MAESTRO_EXTRA_ARGS=" --include-tags=basic " 7. Teacher verifies assignment progress, completion statistics, student results, and average scores. 8. Teacher validates the generated xAPI statement details, including the raw xAPI statement. 9. Teacher edits the assignment title and verifies the update. + ---