MOBILE-4569 behat: Fix some behat tests
|
@ -153,7 +153,7 @@ jobs:
|
||||||
|
|
||||||
- name: Initialise moodle-plugin-ci
|
- name: Initialise moodle-plugin-ci
|
||||||
run: |
|
run: |
|
||||||
composer create-project -n --no-dev --prefer-dist moodlehq/moodle-plugin-ci ci ^4.4
|
composer create-project -n --no-dev --prefer-dist moodlehq/moodle-plugin-ci ci ^4.5
|
||||||
echo $(cd ci/bin; pwd) >> $GITHUB_PATH
|
echo $(cd ci/bin; pwd) >> $GITHUB_PATH
|
||||||
echo $(cd ci/vendor/bin; pwd) >> $GITHUB_PATH
|
echo $(cd ci/vendor/bin; pwd) >> $GITHUB_PATH
|
||||||
sudo locale-gen en_AU.UTF-8
|
sudo locale-gen en_AU.UTF-8
|
||||||
|
|
|
@ -3,8 +3,7 @@
|
||||||
|
|
||||||
<ion-list>
|
<ion-list>
|
||||||
<ion-item>
|
<ion-item>
|
||||||
<ion-label position="floating">What is the answer to the Ultimate Question of Life, The Universe, and Everything?</ion-label>
|
<ion-input labelPlacement="floating" [(ngModel)]="CONTENT_OTHERDATA.answer" label="What is the answer to the Ultimate Question of Life, The Universe, and Everything?"></ion-input>
|
||||||
<ion-input [(ngModel)]="CONTENT_OTHERDATA.answer"></ion-input>
|
|
||||||
</ion-item>
|
</ion-item>
|
||||||
<ion-item *ngIf="CONTENT_OTHERDATA.answer === '42'">
|
<ion-item *ngIf="CONTENT_OTHERDATA.answer === '42'">
|
||||||
<ion-label>That is correct!</ion-label>
|
<ion-label>That is correct!</ion-label>
|
||||||
|
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
@ -449,7 +449,7 @@ export class AddonModAssignSubmissionComponent implements OnInit, OnDestroy, Can
|
||||||
this.feedback,
|
this.feedback,
|
||||||
this.submitId,
|
this.submitId,
|
||||||
);
|
);
|
||||||
} catch (error) {
|
} catch {
|
||||||
// Error ocurred, consider there are no changes.
|
// Error ocurred, consider there are no changes.
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -100,6 +100,7 @@ Feature: Test marking workflow in assignment activity in app
|
||||||
And I press "Grade" in the app
|
And I press "Grade" in the app
|
||||||
When I set the field "Grade out of 100" to "60" in the app
|
When I set the field "Grade out of 100" to "60" in the app
|
||||||
And I press "Done" in the app
|
And I press "Done" in the app
|
||||||
|
And I wait loading to finish in the app
|
||||||
And I press "Student1" in the app
|
And I press "Student1" in the app
|
||||||
And I press "Grade" in the app
|
And I press "Grade" in the app
|
||||||
Then I should find "60 / 100" within "Current grade in assignment" "ion-item" in the app
|
Then I should find "60 / 100" within "Current grade in assignment" "ion-item" in the app
|
||||||
|
@ -112,6 +113,7 @@ Feature: Test marking workflow in assignment activity in app
|
||||||
And I press "Grade" in the app
|
And I press "Grade" in the app
|
||||||
When I set the field "Grade out of 100" to "80" in the app
|
When I set the field "Grade out of 100" to "80" in the app
|
||||||
And I press "Done" in the app
|
And I press "Done" in the app
|
||||||
|
And I wait loading to finish in the app
|
||||||
And I press "Student3" in the app
|
And I press "Student3" in the app
|
||||||
And I press "Grade" in the app
|
And I press "Grade" in the app
|
||||||
Then I should find "80" within "Current grade in gradebook" "ion-item" in the app
|
Then I should find "80" within "Current grade in gradebook" "ion-item" in the app
|
||||||
|
|
|
@ -49,6 +49,8 @@ Feature: Test basic usage of BBB activity in app
|
||||||
And I should be able to press "Join session" in the app
|
And I should be able to press "Join session" in the app
|
||||||
|
|
||||||
When I press "Join session" in the app
|
When I press "Join session" in the app
|
||||||
|
# TODO: This step will make behat github actions work but we should find a better way to wait for the room to start.
|
||||||
|
And I wait "3" seconds
|
||||||
And I wait for the BigBlueButton room to start
|
And I wait for the BigBlueButton room to start
|
||||||
And I switch back to the app
|
And I switch back to the app
|
||||||
Then I should find "The session is in progress." in the app
|
Then I should find "The session is in progress." in the app
|
||||||
|
@ -68,6 +70,8 @@ Feature: Test basic usage of BBB activity in app
|
||||||
And I should be able to press "Join session" in the app
|
And I should be able to press "Join session" in the app
|
||||||
|
|
||||||
When I press "Join session" in the app
|
When I press "Join session" in the app
|
||||||
|
# TODO: This step will make behat github actions work but we should find a better way to wait for the room to start.
|
||||||
|
And I wait "3" seconds
|
||||||
And I wait for the BigBlueButton room to start
|
And I wait for the BigBlueButton room to start
|
||||||
And I switch back to the app
|
And I switch back to the app
|
||||||
Then I should find "The session is in progress." in the app
|
Then I should find "The session is in progress." in the app
|
||||||
|
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
@ -167,12 +167,16 @@ Feature: Attempt a quiz in app
|
||||||
And I press "Three" in the app
|
And I press "Three" in the app
|
||||||
And I set the field "Answer" to "Berlin" in the app
|
And I set the field "Answer" to "Berlin" in the app
|
||||||
And I press "Next" in the app
|
And I press "Next" in the app
|
||||||
|
And I wait loading to finish in the app
|
||||||
And I set the field "Answer" to "testing" in the app
|
And I set the field "Answer" to "testing" in the app
|
||||||
And I press "Next" in the app
|
And I press "Next" in the app
|
||||||
|
And I wait loading to finish in the app
|
||||||
And I set the field "Answer" to "5" in the app
|
And I set the field "Answer" to "5" in the app
|
||||||
And I press "Next" in the app
|
And I press "Next" in the app
|
||||||
|
And I wait loading to finish in the app
|
||||||
And I set the field "Answer" to "Testing an essay" in the app
|
And I set the field "Answer" to "Testing an essay" in the app
|
||||||
And I press "Next" "ion-button" in the app
|
And I press "Next" "ion-button" in the app
|
||||||
|
And I wait loading to finish in the app
|
||||||
And I press "quick" ".drag" in the app
|
And I press "quick" ".drag" in the app
|
||||||
And I click on ".place1.drop" "css"
|
And I click on ".place1.drop" "css"
|
||||||
And I press "fox" ".drag" in the app
|
And I press "fox" ".drag" in the app
|
||||||
|
@ -180,26 +184,33 @@ Feature: Attempt a quiz in app
|
||||||
And I press "lazy" ".drag" in the app
|
And I press "lazy" ".drag" in the app
|
||||||
And I click on ".place3.drop" "css"
|
And I click on ".place3.drop" "css"
|
||||||
And I press "Next" in the app
|
And I press "Next" in the app
|
||||||
|
And I wait loading to finish in the app
|
||||||
And I press "True" in the app
|
And I press "True" in the app
|
||||||
And I press "Next" in the app
|
And I press "Next" in the app
|
||||||
|
And I wait loading to finish in the app
|
||||||
And I set the field "frog" to "amphibian" in the app
|
And I set the field "frog" to "amphibian" in the app
|
||||||
And I set the field "newt" to "insect" in the app
|
And I set the field "newt" to "insect" in the app
|
||||||
And I set the field "cat" to "mammal" in the app
|
And I set the field "cat" to "mammal" in the app
|
||||||
And I press "Next" in the app
|
And I press "Next" in the app
|
||||||
|
And I wait loading to finish in the app
|
||||||
Then I should find "Text of the eighth question" in the app
|
Then I should find "Text of the eighth question" in the app
|
||||||
|
|
||||||
When I press "Next" in the app
|
When I press "Next" in the app
|
||||||
|
And I wait loading to finish in the app
|
||||||
And I set the field "Blank 1" to "cat" in the app
|
And I set the field "Blank 1" to "cat" in the app
|
||||||
And I set the field "Blank 2" to "mat" in the app
|
And I set the field "Blank 2" to "mat" in the app
|
||||||
And I press "Next" in the app
|
And I press "Next" in the app
|
||||||
|
And I wait loading to finish in the app
|
||||||
And I press "abyssal" ".drag" in the app
|
And I press "abyssal" ".drag" in the app
|
||||||
And I click on ".place6.dropzone" "css"
|
And I click on ".place6.dropzone" "css"
|
||||||
And I press "trench" ".drag" in the app
|
And I press "trench" ".drag" in the app
|
||||||
And I click on ".place3.dropzone" "css"
|
And I click on ".place3.dropzone" "css"
|
||||||
And I press "Next" in the app
|
And I press "Next" in the app
|
||||||
|
And I wait loading to finish in the app
|
||||||
And I press "Railway station" ".marker" in the app
|
And I press "Railway station" ".marker" in the app
|
||||||
And I click on "img.dropbackground" "css"
|
And I click on "img.dropbackground" "css"
|
||||||
And I press "Submit" in the app
|
And I press "Submit" in the app
|
||||||
|
And I wait loading to finish in the app
|
||||||
Then I should find "Answer saved" in the app
|
Then I should find "Answer saved" in the app
|
||||||
And I should find "Incomplete answer" within "10" "ion-item" in the app
|
And I should find "Incomplete answer" within "10" "ion-item" in the app
|
||||||
But I should not find "Not yet answered" in the app
|
But I should not find "Not yet answered" in the app
|
||||||
|
@ -224,8 +235,10 @@ Feature: Attempt a quiz in app
|
||||||
|
|
||||||
When I press "True" in the app
|
When I press "True" in the app
|
||||||
And I press "Next" in the app
|
And I press "Next" in the app
|
||||||
|
And I wait loading to finish in the app
|
||||||
And I press "False" in the app
|
And I press "False" in the app
|
||||||
And I press "Submit" in the app
|
And I press "Submit" in the app
|
||||||
|
And I wait loading to finish in the app
|
||||||
And I press "Submit all and finish" in the app
|
And I press "Submit all and finish" in the app
|
||||||
Then I should find "Once you submit" in the app
|
Then I should find "Once you submit" in the app
|
||||||
But I should not find "Questions without a response" in the app
|
But I should not find "Questions without a response" in the app
|
||||||
|
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
@ -1185,7 +1185,7 @@ export class CoreUtilsProvider {
|
||||||
if (options.showBrowserWarning || options.showBrowserWarning === undefined) {
|
if (options.showBrowserWarning || options.showBrowserWarning === undefined) {
|
||||||
try {
|
try {
|
||||||
await CoreWindow.confirmOpenBrowserIfNeeded(originaUrl);
|
await CoreWindow.confirmOpenBrowserIfNeeded(originaUrl);
|
||||||
} catch (error) {
|
} catch {
|
||||||
return; // Cancelled, stop.
|
return; // Cancelled, stop.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,10 +196,13 @@ export class TestingBehatBlockingService {
|
||||||
await CoreUtils.nextTick();
|
await CoreUtils.nextTick();
|
||||||
|
|
||||||
const blockingElements = Array.from(
|
const blockingElements = Array.from(
|
||||||
document.querySelectorAll<HTMLElement>('div.core-loading-container, ion-loading, .click-block-active'),
|
document.querySelectorAll<HTMLElement>('div.core-loading-container, ion-loading'),
|
||||||
);
|
);
|
||||||
|
|
||||||
const isBlocked = blockingElements.some(element => {
|
const isBlocked = blockingElements.some(element => {
|
||||||
|
// @TODO Fix ion-loading present check with CoreDom.isElementVisible.
|
||||||
|
// ion-loading never has offsetParent since position is fixed.
|
||||||
|
// Using isElementVisible solve the problem but will block behats (like BBB).
|
||||||
if (!element.offsetParent) {
|
if (!element.offsetParent) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -159,11 +159,19 @@ export class TestingBehatRuntimeService {
|
||||||
*/
|
*/
|
||||||
async waitLoadingToFinish(): Promise<void> {
|
async waitLoadingToFinish(): Promise<void> {
|
||||||
await NgZone.run(async () => {
|
await NgZone.run(async () => {
|
||||||
const elements = Array.from(document.body.querySelectorAll<HTMLElement>('core-loading'))
|
const coreLoadingsPromises: Promise<unknown>[] =
|
||||||
.filter((element) => CoreDom.isElementVisible(element));
|
Array.from(document.body.querySelectorAll<HTMLElement>('core-loading'))
|
||||||
|
.filter((element) => CoreDom.isElementVisible(element))
|
||||||
|
.map(element => CoreDirectivesRegistry.waitDirectiveReady(element, CoreLoadingComponent));
|
||||||
|
|
||||||
await Promise.all(elements.map(element =>
|
const ionLoadingsPromises: Promise<unknown>[] =
|
||||||
CoreDirectivesRegistry.waitDirectiveReady(element, CoreLoadingComponent)));
|
Array.from(document.body.querySelectorAll<HTMLIonLoadingElement>('ion-loading'))
|
||||||
|
.filter((element) => CoreDom.isElementVisible(element))
|
||||||
|
.map(element => element.onDidDismiss());
|
||||||
|
|
||||||
|
const promises = coreLoadingsPromises.concat(ionLoadingsPromises);
|
||||||
|
|
||||||
|
await Promise.all(promises);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|