From bcd4a1ad26e92b572059d63c4c72bc69d95a5bcb Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Mon, 5 Feb 2024 13:05:55 +1100 Subject: [PATCH 01/22] chore: simplify ci --- .github/workflows/ci.yaml | 78 --------------------------------------- 1 file changed, 78 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 477e130649..0333281bc5 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -83,33 +83,6 @@ jobs: run: | npm ci - - name: Run checks - run: | - npm run check - ./sbt headerCheck - - # oeq-ts-rest-api has its own ESLint checks seeing the ultimate plan - # is that it's moved to its own stand-alone repo. But so here we need - # to explicitly run them. - - name: Run checks (oeq-ts-rest-api) - working-directory: oeq-ts-rest-api - run: | - npm run lint - - - name: Run unit tests (java/scala) - run: | - ./sbt test - - - name: Run unit tests (javascript) - working-directory: react-front-end - run: | - npm cit - - - name: Run unit tests (javascript - legacy) - working-directory: Source/Plugins/Core/com.equella.core/test/javascript - run: | - npm cit - - name: Build primary artefacts run: | ./sbt installerZip writeLanguagePack writeScriptingJavadoc @@ -128,57 +101,6 @@ jobs: name: Artefacts path: artefacts.tar - build_storybook: - runs-on: ubuntu-latest - steps: - # Using v1 (rather than v2) through-out this workflow due to issue: - # https://github.com/actions/checkout/issues/237 - - uses: actions/checkout@v4 - - - name: NPM Cache - uses: actions/cache@v3 - with: - path: ~/.npm - key: ${{ runner.os }}-npm.storybook-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-npm.storybook- - - - name: Setup node - uses: actions/setup-node@v3 - with: - node-version-file: '.nvmrc' - - - name: Install node dependencies (oeq-rest-api) - working-directory: oeq-ts-rest-api - run: | - npm ci - - - name: Build oEQ REST module (oeq-rest-api) - working-directory: oeq-ts-rest-api - run: | - npm run build - - - name: Install node dependencies (core) - working-directory: react-front-end - run: | - npm ci - - - name: Generate Static Storybook instance - working-directory: react-front-end - run: | - npm run build-storybook - - - name: Package Static Storybook instance - working-directory: react-front-end - run: | - tar cvf storybook.tar storybook-static - - - name: Save Static Storybook instance - uses: actions/upload-artifact@v3.1.3 - with: - name: Storybook - path: react-front-end/storybook.tar - functional_testing: needs: build_and_check From f5eeee41d020b29bdc06abdf2e9c7e0e3e0e6fa8 Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Tue, 6 Feb 2024 15:34:53 +1100 Subject: [PATCH 02/22] chore: simplify test fonfig --- .../search/AdvancedSearchPageTest.java | 7 + autotest/OldTests/testng-codebuild.yaml | 156 +----------------- 2 files changed, 8 insertions(+), 155 deletions(-) diff --git a/autotest/OldTests/src/test/java/io/github/openequella/search/AdvancedSearchPageTest.java b/autotest/OldTests/src/test/java/io/github/openequella/search/AdvancedSearchPageTest.java index dc4ea579f7..5417c38f44 100644 --- a/autotest/OldTests/src/test/java/io/github/openequella/search/AdvancedSearchPageTest.java +++ b/autotest/OldTests/src/test/java/io/github/openequella/search/AdvancedSearchPageTest.java @@ -5,6 +5,7 @@ import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; +import com.tle.webtests.framework.ScreenshotTaker; import com.tle.webtests.framework.TestInstitution; import com.tle.webtests.pageobject.SettingsPage; import com.tle.webtests.pageobject.searching.FavouritesPage; @@ -197,6 +198,12 @@ public void shuffleList(String[] targetQueries, int expectItemCount, String[] ex @Test(description = "Search by using the User selector control") @NewUIOnly public void userSelector() { + ScreenshotTaker.takeScreenshot( + advancedSearchPage.getContext().getDriver(), + testConfig.getScreenshotFolder(), + "userSelector-before", + testConfig.isChromeDriverSet()); + advancedSearchPage.selectUser("AutoTest"); advancedSearchPage.search(); advancedSearchPage.waitForSearchCompleted(1); diff --git a/autotest/OldTests/testng-codebuild.yaml b/autotest/OldTests/testng-codebuild.yaml index 5343520292..956998522a 100644 --- a/autotest/OldTests/testng-codebuild.yaml +++ b/autotest/OldTests/testng-codebuild.yaml @@ -5,160 +5,6 @@ listeners: tests: - name: OneAfterAnother packages: - - io.github.openequella.rest - io.github.openequella.search - - io.github.openequella.jwks classes: - - com.tle.webtests.test.searching.BrowsebyTest - - com.tle.webtests.test.searching.GallerySearchTest - - com.tle.webtests.test.searching.GuidedSearchingTest - - com.tle.webtests.test.searching.PowerSearchTest - - com.tle.webtests.test.searching.FavouritesPowerSearchIntegration - - com.tle.webtests.test.searching.SearchAutoCompleteTest - - com.tle.webtests.test.searching.SearchEnhancementsTest - - com.tle.webtests.test.searching.SearchFiltersTest - - com.tle.webtests.test.searching.SearchSettingsTest - - com.tle.webtests.test.searching.SearchUrlSupportedParamsTest - - com.tle.webtests.test.searching.UTF8SearchingTest - - com.tle.webtests.test.searching.manage.BulkMetadataEditTest - - com.tle.webtests.test.searching.manage.BulkScriptExecutionTest - - com.tle.webtests.test.searching.manage.ManageResourcesFavouritesTest - - com.tle.webtests.test.searching.manage.ManageResourcesNoScrapbookTest - - com.tle.webtests.test.searching.manage.ManageResourcesSearchTest - - com.tle.webtests.test.searching.indexing.AutomaticIndexingOfCommentsTest - - com.tle.webtests.test.searching.indexing.AutomaticIndexingTest - - com.tle.webtests.test.searching.indexing.FileIndexingTest - - com.tle.webtests.test.searching.hierarchy.HierarchyTopicTest - - com.tle.webtests.test.contribute.bugs.VisibilityScriptingBugTest - - com.tle.webtests.test.contribute.controls.AllControlsTest - - com.tle.webtests.test.contribute.controls.BannedExtensionTest - - com.tle.webtests.test.contribute.controls.FileSizeRestrictionTest - - com.tle.webtests.test.contribute.controls.GroupsAndDisabling - - com.tle.webtests.test.contribute.controls.HTMLEditBoxTest - - com.tle.webtests.test.contribute.controls.IncorrectMimetypeTest - - com.tle.webtests.test.contribute.controls.MaxAttachmentsTest - - com.tle.webtests.test.contribute.controls.PackageAndNavigationTest - - com.tle.webtests.test.contribute.controls.RepeaterTest - - com.tle.webtests.test.contribute.controls.TaxonomyControlsTest - - com.tle.webtests.test.contribute.ContributeXmlTest - - com.tle.webtests.test.contribute.DiscoverabilityTest - - com.tle.webtests.test.contribute.EquellaConnectorTest - - com.tle.webtests.test.contribute.ItemUnlock - - com.tle.webtests.test.contribute.MetadataMappingTest - - com.tle.webtests.test.contribute.QuotaExceedTest - - com.tle.webtests.test.contribute.ResumableWizardsTest - - com.tle.webtests.test.contribute.SelectAndDisplayThumbnailTest - - com.tle.webtests.test.contribute.SelectionSessionTest - - com.tle.webtests.test.contribute.StaticMetadataTest - - com.tle.webtests.test.contribute.UniquenessTest - - com.tle.webtests.test.contribute.VaryingContribPageNmbrSaveTest - - com.tle.webtests.test.contribute.WizardBreadcrumbs - - com.tle.webtests.test.contribute.WizardConfigTest - - com.tle.webtests.test.contribute.controls.attachments.AttachmentControlTest - - com.tle.webtests.test.contribute.controls.attachments.FileAttachmentControlTest - - com.tle.webtests.test.contribute.controls.attachments.LTIAttachmentControlTest - - com.tle.webtests.test.contribute.controls.attachments.MultipleAttachmentControlTest - - com.tle.webtests.test.contribute.controls.attachments.RestrictedAttachmentsTest - - com.tle.webtests.test.contribute.controls.asc.AdvancedScriptControlTests - - com.tle.webtests.test.contribute.controls.asc.PropBagExTest - - com.tle.webtests.test.contribute.controls.asc.ScriptedDisplayTemplateTest - - com.tle.webtests.test.contribute.controls.asc.ScriptedPortletTests - - com.tle.webtests.test.reporting.RunReportTest - - com.tle.webtests.test.viewing.DisplayNodesTest - - com.tle.webtests.test.viewing.ItemHistoryTest - - com.tle.webtests.test.viewing.ItemServletRedirectTest - - com.tle.webtests.test.viewing.ItemSummaryTest - - com.tle.webtests.test.viewing.MimeTypesTest - #- com.tle.webtests.test.viewing.ModerationHistoryPreviewVal - #- com.tle.webtests.rewrite.ModerationRejectedComments - - com.tle.webtests.test.viewing.SearchResultTemplateTest - - com.tle.webtests.test.viewing.ServeSSITest - #- com.tle.webtests.test.viewing.ShowHideOwnerCollaborator - - com.tle.webtests.test.viewing.SummaryXSLTTest - - com.tle.webtests.test.viewing.VersionShowAllTest - - com.tle.webtests.test.viewing.ViewerTest - - com.tle.webtests.test.admin.CustomLinksTest - - com.tle.webtests.test.admin.ServerMessageTest - - com.tle.webtests.test.admin.MultiLingualTest - - com.tle.webtests.test.admin.ApidocsTest - - com.tle.webtests.test.accessibility.AccessibilityModeTest - - com.tle.webtests.test.acl.ACLTest - - com.tle.webtests.test.cal.CALActivationsMetadataTest - - com.tle.webtests.test.cal.CALActivationsRolloverTest - - com.tle.webtests.test.cal.CALAgreementTest - - com.tle.webtests.test.cal.CALBookActivationTest - - com.tle.webtests.test.cal.CALBookRulesTest - - com.tle.webtests.test.cal.CALExtractTest - - com.tle.webtests.test.cal.CALJournalRulesTest - - com.tle.webtests.test.cal.CALPrivilegeTest - - com.tle.webtests.test.cal.CALSoapInterfaceTest - - com.tle.webtests.test.cal.CALViolationTest - - com.tle.webtests.test.dashboard.PortalsTest - - com.tle.webtests.test.drm.DRMPrivilegeTest - - com.tle.webtests.test.drm.DRMTest - - com.tle.webtests.test.drm.DRMTestWithCleanup - - com.tle.webtests.test.drm.WizardDRMTest - - com.tle.webtests.test.dynamichierarchy.DynamicHierarchyTest - - com.tle.webtests.test.importexport.CloneTest - - com.tle.webtests.test.importexport.ExportTest - - com.tle.webtests.test.importexport.ImportTest - - com.tle.webtests.test.myresources.favourites.FavouriteItemsTest - - com.tle.webtests.test.myresources.favourites.FavouritesInIntegrationTest - - com.tle.webtests.test.myresources.favourites.ResourceSelectorFavouritesTest - - com.tle.webtests.test.myresources.MyResourcesTest - - com.tle.webtests.test.myresources.MyResourcesWebPageTest - - com.tle.webtests.test.users.DisplayDateFormatTest - - com.tle.webtests.test.users.LoginSettingsTest - - com.tle.webtests.test.users.TokenLoginTest - - com.tle.webtests.test.users.UserPasswordTest - - com.tle.webtests.test.users.LDAPTest - - com.tle.webtests.test.usersscripts.UserScriptTest - - com.tle.webtests.test.webservices.rest.ActivationApiTest - - com.tle.webtests.test.webservices.rest.CollectionApiTest - - com.tle.webtests.test.webservices.rest.CommentApiTest - - com.tle.webtests.test.webservices.rest.CourseApiTest - - com.tle.webtests.test.webservices.rest.DynaCollectionApiTest - - com.tle.webtests.test.webservices.rest.FileApiTest - - com.tle.webtests.test.webservices.rest.FileListingApiTest - - com.tle.webtests.test.webservices.rest.HierarchyApiTest - - com.tle.webtests.test.webservices.rest.ItemApiActionsTest - - com.tle.webtests.test.webservices.rest.ItemApiContributeTest - - com.tle.webtests.test.webservices.rest.ItemApiEditTest - - com.tle.webtests.test.webservices.rest.ItemApiLockTest - - com.tle.webtests.test.webservices.rest.ItemApiQuickContributeTest - - com.tle.webtests.test.webservices.rest.ItemApiRelationTest - - com.tle.webtests.test.webservices.rest.ItemApiViewTest - - com.tle.webtests.test.webservices.rest.MyResourcesApiTest - - com.tle.webtests.test.webservices.rest.NotificationsApiTest - - com.tle.webtests.test.webservices.rest.OAuthClientEditorTest - - com.tle.webtests.test.webservices.rest.OAuthTest - - com.tle.webtests.test.webservices.rest.SchemaApiTest - - com.tle.webtests.test.webservices.rest.ScrapbookApiTest - - com.tle.webtests.test.webservices.rest.SearchApiTest - - com.tle.webtests.test.webservices.rest.TasksApiTest - - com.tle.webtests.test.webservices.rest.TaxonomyApiTest - - com.tle.webtests.test.webservices.rest.UserGroupManagementApiTest - - com.tle.webtests.test.webservices.soap.Soap51Test - - com.tle.webtests.test.webservices.soap.SoapServicesTest - - com.tle.webtests.test.webservices.OAIEndpointTest - - com.tle.webtests.test.webservices.SRWTest - - com.tle.webtests.test.webservices.rest.SearchSettingApiTest - - com.tle.webtests.test.webservices.rest.FacetedSearchClassificationApiTest - - com.tle.webtests.test.workflow.assignment.AutoAssignBiggerTest - - com.tle.webtests.test.workflow.rejection.DecisionPointScriptingByContributorRoleTest - - com.tle.webtests.test.workflow.assignment.AutoAssignSimpleTest - - com.tle.webtests.test.workflow.movetolive.MoveToLiveDuringWorkflowTest - - com.tle.webtests.test.workflow.assignment.WorkflowAssignmentTest - - com.tle.webtests.test.workflow.rejection.DecisionPointScriptingBySchemaElementTest - - com.tle.webtests.test.workflow.rejection.DecisionPointScriptingByItemStatusTest - - com.tle.webtests.test.workflow.rejection.NewVersionTest - - com.tle.webtests.test.workflow.rejection.RejectionPointsTest - - com.tle.webtests.test.workflow.rejection.RejectionPointsWithDecisionNodesTest - - com.tle.webtests.test.workflow.rejection.RejectionTest - - com.tle.webtests.test.workflow.ClonedItemTest - - com.tle.webtests.test.workflow.ManageTasksTest - - com.tle.webtests.test.workflow.MessageToModeratorTest - - com.tle.webtests.test.workflow.ModerationProgressTest - - com.tle.webtests.test.workflow.TaskListNavigationTest - - com.tle.webtests.test.workflow.TasksNotificationsTopbarTest - - com.tle.webtests.test.workflow.TasksSortingAndFilteringTest + - io.github.openequella.search.AdvancedSearchPageTest From a109ec1816bda7173483dc0199d8dce59a6da934 Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Wed, 7 Feb 2024 11:45:00 +1100 Subject: [PATCH 03/22] chore: test --- .../pages/advancedsearch/NewAdvancedSearchPage.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/autotest/OldTests/src/test/java/io/github/openequella/pages/advancedsearch/NewAdvancedSearchPage.java b/autotest/OldTests/src/test/java/io/github/openequella/pages/advancedsearch/NewAdvancedSearchPage.java index 20943853b6..2a87fa2361 100644 --- a/autotest/OldTests/src/test/java/io/github/openequella/pages/advancedsearch/NewAdvancedSearchPage.java +++ b/autotest/OldTests/src/test/java/io/github/openequella/pages/advancedsearch/NewAdvancedSearchPage.java @@ -140,17 +140,18 @@ public void selectUser(String username) { WebElement userSelector = driver.findElement(By.id("wiz-12-userselector")); // Open the dialog and search for the target user. - userSelector.findElement(By.tagName("button")).click(); + WebElement button = userSelector.findElement(By.tagName("button")); + scrollToElement(button); + button.click(); + WebElement dialog = driver.findElement(By.xpath("//div[@role='dialog']")); WebElement input = dialog.findElement(By.tagName("input")); input.sendKeys(username); input.sendKeys(Keys.ENTER); + WebElement user = dialog.findElement(By.xpath(".//span[text()='" + username + "']")); // Select the target result. - WebElement targetUser = - waiter.until( - ExpectedConditions.elementToBeClickable( - dialog.findElement(By.xpath(".//span[text()='" + username + "']")))); + WebElement targetUser = waiter.until(ExpectedConditions.elementToBeClickable(user)); targetUser.click(); // Confirm the selection. From 020cd6788ef068e2009fbb42113909a122476e35 Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Wed, 7 Feb 2024 14:12:24 +1100 Subject: [PATCH 04/22] chore: remove findelement --- .../pages/advancedsearch/NewAdvancedSearchPage.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/autotest/OldTests/src/test/java/io/github/openequella/pages/advancedsearch/NewAdvancedSearchPage.java b/autotest/OldTests/src/test/java/io/github/openequella/pages/advancedsearch/NewAdvancedSearchPage.java index 2a87fa2361..903d0b8b02 100644 --- a/autotest/OldTests/src/test/java/io/github/openequella/pages/advancedsearch/NewAdvancedSearchPage.java +++ b/autotest/OldTests/src/test/java/io/github/openequella/pages/advancedsearch/NewAdvancedSearchPage.java @@ -149,7 +149,8 @@ public void selectUser(String username) { input.sendKeys(username); input.sendKeys(Keys.ENTER); - WebElement user = dialog.findElement(By.xpath(".//span[text()='" + username + "']")); + By user = By.xpath(".//span[text()='" + username + "']"); + // Select the target result. WebElement targetUser = waiter.until(ExpectedConditions.elementToBeClickable(user)); targetUser.click(); From c745b5064060de6f0499aab2dd195ec3ee6b7148 Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Wed, 7 Feb 2024 14:18:32 +1100 Subject: [PATCH 05/22] chore: add dialog xpath --- .../pages/advancedsearch/NewAdvancedSearchPage.java | 7 ++++--- .../github/openequella/search/AdvancedSearchPageTest.java | 7 ------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/autotest/OldTests/src/test/java/io/github/openequella/pages/advancedsearch/NewAdvancedSearchPage.java b/autotest/OldTests/src/test/java/io/github/openequella/pages/advancedsearch/NewAdvancedSearchPage.java index 903d0b8b02..22cb370012 100644 --- a/autotest/OldTests/src/test/java/io/github/openequella/pages/advancedsearch/NewAdvancedSearchPage.java +++ b/autotest/OldTests/src/test/java/io/github/openequella/pages/advancedsearch/NewAdvancedSearchPage.java @@ -149,10 +149,11 @@ public void selectUser(String username) { input.sendKeys(username); input.sendKeys(Keys.ENTER); - By user = By.xpath(".//span[text()='" + username + "']"); - // Select the target result. - WebElement targetUser = waiter.until(ExpectedConditions.elementToBeClickable(user)); + WebElement targetUser = + waiter.until( + ExpectedConditions.elementToBeClickable( + By.xpath("//div[@role='dialog']//span[text()='" + username + "']"))); targetUser.click(); // Confirm the selection. diff --git a/autotest/OldTests/src/test/java/io/github/openequella/search/AdvancedSearchPageTest.java b/autotest/OldTests/src/test/java/io/github/openequella/search/AdvancedSearchPageTest.java index 5417c38f44..dc4ea579f7 100644 --- a/autotest/OldTests/src/test/java/io/github/openequella/search/AdvancedSearchPageTest.java +++ b/autotest/OldTests/src/test/java/io/github/openequella/search/AdvancedSearchPageTest.java @@ -5,7 +5,6 @@ import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; -import com.tle.webtests.framework.ScreenshotTaker; import com.tle.webtests.framework.TestInstitution; import com.tle.webtests.pageobject.SettingsPage; import com.tle.webtests.pageobject.searching.FavouritesPage; @@ -198,12 +197,6 @@ public void shuffleList(String[] targetQueries, int expectItemCount, String[] ex @Test(description = "Search by using the User selector control") @NewUIOnly public void userSelector() { - ScreenshotTaker.takeScreenshot( - advancedSearchPage.getContext().getDriver(), - testConfig.getScreenshotFolder(), - "userSelector-before", - testConfig.isChromeDriverSet()); - advancedSearchPage.selectUser("AutoTest"); advancedSearchPage.search(); advancedSearchPage.waitForSearchCompleted(1); From 890fc3de0362c685804ae833bf322f2be059e98a Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Wed, 7 Feb 2024 15:24:12 +1100 Subject: [PATCH 06/22] chore: change test config to CALBookActivationTest --- autotest/OldTests/testng-codebuild.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/autotest/OldTests/testng-codebuild.yaml b/autotest/OldTests/testng-codebuild.yaml index 956998522a..f8b601d948 100644 --- a/autotest/OldTests/testng-codebuild.yaml +++ b/autotest/OldTests/testng-codebuild.yaml @@ -5,6 +5,5 @@ listeners: tests: - name: OneAfterAnother packages: - - io.github.openequella.search classes: - - io.github.openequella.search.AdvancedSearchPageTest + - - com.tle.webtests.test.cal.CALBookActivationTest From 887ded81dd4f2693096cdb47fb2c28239bac8620 Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Wed, 7 Feb 2024 17:40:00 +1100 Subject: [PATCH 07/22] chore: remove packages --- autotest/OldTests/testng-codebuild.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/autotest/OldTests/testng-codebuild.yaml b/autotest/OldTests/testng-codebuild.yaml index f8b601d948..9659a44bf3 100644 --- a/autotest/OldTests/testng-codebuild.yaml +++ b/autotest/OldTests/testng-codebuild.yaml @@ -4,6 +4,5 @@ listeners: - testng.TestAnnotationTransformer tests: - name: OneAfterAnother - packages: classes: - - com.tle.webtests.test.cal.CALBookActivationTest From 98c6803ecacad2496af96f91054429edf2a720e2 Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Fri, 9 Feb 2024 09:40:50 +1100 Subject: [PATCH 08/22] chore: test FavouritesPowerSearchIntegration --- autotest/OldTests/testng-codebuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autotest/OldTests/testng-codebuild.yaml b/autotest/OldTests/testng-codebuild.yaml index 9659a44bf3..14b3e249ad 100644 --- a/autotest/OldTests/testng-codebuild.yaml +++ b/autotest/OldTests/testng-codebuild.yaml @@ -5,4 +5,4 @@ listeners: tests: - name: OneAfterAnother classes: - - - com.tle.webtests.test.cal.CALBookActivationTest + - - com.tle.webtests.test.searching.FavouritesPowerSearchIntegration From 7eb73bd37eddff2b8f72f0783c139039bdbd3225 Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Fri, 9 Feb 2024 10:35:59 +1100 Subject: [PATCH 09/22] chore: split --- .../webtests/pageobject/searching/AbstractResultList.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/autotest/Tests/src/main/java/com/tle/webtests/pageobject/searching/AbstractResultList.java b/autotest/Tests/src/main/java/com/tle/webtests/pageobject/searching/AbstractResultList.java index 072c97c503..0c022f1758 100644 --- a/autotest/Tests/src/main/java/com/tle/webtests/pageobject/searching/AbstractResultList.java +++ b/autotest/Tests/src/main/java/com/tle/webtests/pageobject/searching/AbstractResultList.java @@ -87,8 +87,9 @@ public List getResults() { List results = new ArrayList(); if (isResultsAvailable()) { - int count = - getResultsDiv().findElements(By.xpath("//div[@class='itemresult-wrapper']")).size(); + WebElement result = getResultsDiv(); + + int count = result.findElements(By.xpath("//div[@class='itemresult-wrapper']")).size(); for (int i = 1; i <= count; i++) { results.add(getResult(i)); From d0ea350ac6cb24d32f7dff1d9aaf783c9c8def8d Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Tue, 13 Feb 2024 16:49:49 +1100 Subject: [PATCH 10/22] chore: remove duplicated dash --- autotest/OldTests/testng-codebuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autotest/OldTests/testng-codebuild.yaml b/autotest/OldTests/testng-codebuild.yaml index 14b3e249ad..3fb32f0af2 100644 --- a/autotest/OldTests/testng-codebuild.yaml +++ b/autotest/OldTests/testng-codebuild.yaml @@ -5,4 +5,4 @@ listeners: tests: - name: OneAfterAnother classes: - - - com.tle.webtests.test.searching.FavouritesPowerSearchIntegration + - com.tle.webtests.test.searching.FavouritesPowerSearchIntegration From d9060fa3bd1b9b133f57803944ef93fb6df4e149 Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Wed, 14 Feb 2024 10:36:35 +1100 Subject: [PATCH 11/22] revert: testng-codebuild.yaml --- autotest/OldTests/testng-codebuild.yaml | 156 ++++++++++++++++++++++++ 1 file changed, 156 insertions(+) diff --git a/autotest/OldTests/testng-codebuild.yaml b/autotest/OldTests/testng-codebuild.yaml index 3fb32f0af2..5343520292 100644 --- a/autotest/OldTests/testng-codebuild.yaml +++ b/autotest/OldTests/testng-codebuild.yaml @@ -4,5 +4,161 @@ listeners: - testng.TestAnnotationTransformer tests: - name: OneAfterAnother + packages: + - io.github.openequella.rest + - io.github.openequella.search + - io.github.openequella.jwks classes: + - com.tle.webtests.test.searching.BrowsebyTest + - com.tle.webtests.test.searching.GallerySearchTest + - com.tle.webtests.test.searching.GuidedSearchingTest + - com.tle.webtests.test.searching.PowerSearchTest - com.tle.webtests.test.searching.FavouritesPowerSearchIntegration + - com.tle.webtests.test.searching.SearchAutoCompleteTest + - com.tle.webtests.test.searching.SearchEnhancementsTest + - com.tle.webtests.test.searching.SearchFiltersTest + - com.tle.webtests.test.searching.SearchSettingsTest + - com.tle.webtests.test.searching.SearchUrlSupportedParamsTest + - com.tle.webtests.test.searching.UTF8SearchingTest + - com.tle.webtests.test.searching.manage.BulkMetadataEditTest + - com.tle.webtests.test.searching.manage.BulkScriptExecutionTest + - com.tle.webtests.test.searching.manage.ManageResourcesFavouritesTest + - com.tle.webtests.test.searching.manage.ManageResourcesNoScrapbookTest + - com.tle.webtests.test.searching.manage.ManageResourcesSearchTest + - com.tle.webtests.test.searching.indexing.AutomaticIndexingOfCommentsTest + - com.tle.webtests.test.searching.indexing.AutomaticIndexingTest + - com.tle.webtests.test.searching.indexing.FileIndexingTest + - com.tle.webtests.test.searching.hierarchy.HierarchyTopicTest + - com.tle.webtests.test.contribute.bugs.VisibilityScriptingBugTest + - com.tle.webtests.test.contribute.controls.AllControlsTest + - com.tle.webtests.test.contribute.controls.BannedExtensionTest + - com.tle.webtests.test.contribute.controls.FileSizeRestrictionTest + - com.tle.webtests.test.contribute.controls.GroupsAndDisabling + - com.tle.webtests.test.contribute.controls.HTMLEditBoxTest + - com.tle.webtests.test.contribute.controls.IncorrectMimetypeTest + - com.tle.webtests.test.contribute.controls.MaxAttachmentsTest + - com.tle.webtests.test.contribute.controls.PackageAndNavigationTest + - com.tle.webtests.test.contribute.controls.RepeaterTest + - com.tle.webtests.test.contribute.controls.TaxonomyControlsTest + - com.tle.webtests.test.contribute.ContributeXmlTest + - com.tle.webtests.test.contribute.DiscoverabilityTest + - com.tle.webtests.test.contribute.EquellaConnectorTest + - com.tle.webtests.test.contribute.ItemUnlock + - com.tle.webtests.test.contribute.MetadataMappingTest + - com.tle.webtests.test.contribute.QuotaExceedTest + - com.tle.webtests.test.contribute.ResumableWizardsTest + - com.tle.webtests.test.contribute.SelectAndDisplayThumbnailTest + - com.tle.webtests.test.contribute.SelectionSessionTest + - com.tle.webtests.test.contribute.StaticMetadataTest + - com.tle.webtests.test.contribute.UniquenessTest + - com.tle.webtests.test.contribute.VaryingContribPageNmbrSaveTest + - com.tle.webtests.test.contribute.WizardBreadcrumbs + - com.tle.webtests.test.contribute.WizardConfigTest + - com.tle.webtests.test.contribute.controls.attachments.AttachmentControlTest + - com.tle.webtests.test.contribute.controls.attachments.FileAttachmentControlTest + - com.tle.webtests.test.contribute.controls.attachments.LTIAttachmentControlTest + - com.tle.webtests.test.contribute.controls.attachments.MultipleAttachmentControlTest + - com.tle.webtests.test.contribute.controls.attachments.RestrictedAttachmentsTest + - com.tle.webtests.test.contribute.controls.asc.AdvancedScriptControlTests + - com.tle.webtests.test.contribute.controls.asc.PropBagExTest + - com.tle.webtests.test.contribute.controls.asc.ScriptedDisplayTemplateTest + - com.tle.webtests.test.contribute.controls.asc.ScriptedPortletTests + - com.tle.webtests.test.reporting.RunReportTest + - com.tle.webtests.test.viewing.DisplayNodesTest + - com.tle.webtests.test.viewing.ItemHistoryTest + - com.tle.webtests.test.viewing.ItemServletRedirectTest + - com.tle.webtests.test.viewing.ItemSummaryTest + - com.tle.webtests.test.viewing.MimeTypesTest + #- com.tle.webtests.test.viewing.ModerationHistoryPreviewVal + #- com.tle.webtests.rewrite.ModerationRejectedComments + - com.tle.webtests.test.viewing.SearchResultTemplateTest + - com.tle.webtests.test.viewing.ServeSSITest + #- com.tle.webtests.test.viewing.ShowHideOwnerCollaborator + - com.tle.webtests.test.viewing.SummaryXSLTTest + - com.tle.webtests.test.viewing.VersionShowAllTest + - com.tle.webtests.test.viewing.ViewerTest + - com.tle.webtests.test.admin.CustomLinksTest + - com.tle.webtests.test.admin.ServerMessageTest + - com.tle.webtests.test.admin.MultiLingualTest + - com.tle.webtests.test.admin.ApidocsTest + - com.tle.webtests.test.accessibility.AccessibilityModeTest + - com.tle.webtests.test.acl.ACLTest + - com.tle.webtests.test.cal.CALActivationsMetadataTest + - com.tle.webtests.test.cal.CALActivationsRolloverTest + - com.tle.webtests.test.cal.CALAgreementTest + - com.tle.webtests.test.cal.CALBookActivationTest + - com.tle.webtests.test.cal.CALBookRulesTest + - com.tle.webtests.test.cal.CALExtractTest + - com.tle.webtests.test.cal.CALJournalRulesTest + - com.tle.webtests.test.cal.CALPrivilegeTest + - com.tle.webtests.test.cal.CALSoapInterfaceTest + - com.tle.webtests.test.cal.CALViolationTest + - com.tle.webtests.test.dashboard.PortalsTest + - com.tle.webtests.test.drm.DRMPrivilegeTest + - com.tle.webtests.test.drm.DRMTest + - com.tle.webtests.test.drm.DRMTestWithCleanup + - com.tle.webtests.test.drm.WizardDRMTest + - com.tle.webtests.test.dynamichierarchy.DynamicHierarchyTest + - com.tle.webtests.test.importexport.CloneTest + - com.tle.webtests.test.importexport.ExportTest + - com.tle.webtests.test.importexport.ImportTest + - com.tle.webtests.test.myresources.favourites.FavouriteItemsTest + - com.tle.webtests.test.myresources.favourites.FavouritesInIntegrationTest + - com.tle.webtests.test.myresources.favourites.ResourceSelectorFavouritesTest + - com.tle.webtests.test.myresources.MyResourcesTest + - com.tle.webtests.test.myresources.MyResourcesWebPageTest + - com.tle.webtests.test.users.DisplayDateFormatTest + - com.tle.webtests.test.users.LoginSettingsTest + - com.tle.webtests.test.users.TokenLoginTest + - com.tle.webtests.test.users.UserPasswordTest + - com.tle.webtests.test.users.LDAPTest + - com.tle.webtests.test.usersscripts.UserScriptTest + - com.tle.webtests.test.webservices.rest.ActivationApiTest + - com.tle.webtests.test.webservices.rest.CollectionApiTest + - com.tle.webtests.test.webservices.rest.CommentApiTest + - com.tle.webtests.test.webservices.rest.CourseApiTest + - com.tle.webtests.test.webservices.rest.DynaCollectionApiTest + - com.tle.webtests.test.webservices.rest.FileApiTest + - com.tle.webtests.test.webservices.rest.FileListingApiTest + - com.tle.webtests.test.webservices.rest.HierarchyApiTest + - com.tle.webtests.test.webservices.rest.ItemApiActionsTest + - com.tle.webtests.test.webservices.rest.ItemApiContributeTest + - com.tle.webtests.test.webservices.rest.ItemApiEditTest + - com.tle.webtests.test.webservices.rest.ItemApiLockTest + - com.tle.webtests.test.webservices.rest.ItemApiQuickContributeTest + - com.tle.webtests.test.webservices.rest.ItemApiRelationTest + - com.tle.webtests.test.webservices.rest.ItemApiViewTest + - com.tle.webtests.test.webservices.rest.MyResourcesApiTest + - com.tle.webtests.test.webservices.rest.NotificationsApiTest + - com.tle.webtests.test.webservices.rest.OAuthClientEditorTest + - com.tle.webtests.test.webservices.rest.OAuthTest + - com.tle.webtests.test.webservices.rest.SchemaApiTest + - com.tle.webtests.test.webservices.rest.ScrapbookApiTest + - com.tle.webtests.test.webservices.rest.SearchApiTest + - com.tle.webtests.test.webservices.rest.TasksApiTest + - com.tle.webtests.test.webservices.rest.TaxonomyApiTest + - com.tle.webtests.test.webservices.rest.UserGroupManagementApiTest + - com.tle.webtests.test.webservices.soap.Soap51Test + - com.tle.webtests.test.webservices.soap.SoapServicesTest + - com.tle.webtests.test.webservices.OAIEndpointTest + - com.tle.webtests.test.webservices.SRWTest + - com.tle.webtests.test.webservices.rest.SearchSettingApiTest + - com.tle.webtests.test.webservices.rest.FacetedSearchClassificationApiTest + - com.tle.webtests.test.workflow.assignment.AutoAssignBiggerTest + - com.tle.webtests.test.workflow.rejection.DecisionPointScriptingByContributorRoleTest + - com.tle.webtests.test.workflow.assignment.AutoAssignSimpleTest + - com.tle.webtests.test.workflow.movetolive.MoveToLiveDuringWorkflowTest + - com.tle.webtests.test.workflow.assignment.WorkflowAssignmentTest + - com.tle.webtests.test.workflow.rejection.DecisionPointScriptingBySchemaElementTest + - com.tle.webtests.test.workflow.rejection.DecisionPointScriptingByItemStatusTest + - com.tle.webtests.test.workflow.rejection.NewVersionTest + - com.tle.webtests.test.workflow.rejection.RejectionPointsTest + - com.tle.webtests.test.workflow.rejection.RejectionPointsWithDecisionNodesTest + - com.tle.webtests.test.workflow.rejection.RejectionTest + - com.tle.webtests.test.workflow.ClonedItemTest + - com.tle.webtests.test.workflow.ManageTasksTest + - com.tle.webtests.test.workflow.MessageToModeratorTest + - com.tle.webtests.test.workflow.ModerationProgressTest + - com.tle.webtests.test.workflow.TaskListNavigationTest + - com.tle.webtests.test.workflow.TasksNotificationsTopbarTest + - com.tle.webtests.test.workflow.TasksSortingAndFilteringTest From f89dc18cf20a0789db5b31ccf3e6fa75a1e90dc4 Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Wed, 14 Feb 2024 15:53:16 +1100 Subject: [PATCH 12/22] chore: add waiter --- .../tle/webtests/pageobject/searching/AbstractResultList.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/autotest/Tests/src/main/java/com/tle/webtests/pageobject/searching/AbstractResultList.java b/autotest/Tests/src/main/java/com/tle/webtests/pageobject/searching/AbstractResultList.java index 0c022f1758..8d3f174c6f 100644 --- a/autotest/Tests/src/main/java/com/tle/webtests/pageobject/searching/AbstractResultList.java +++ b/autotest/Tests/src/main/java/com/tle/webtests/pageobject/searching/AbstractResultList.java @@ -88,8 +88,10 @@ public List getResults() { if (isResultsAvailable()) { WebElement result = getResultsDiv(); + By find = By.xpath("//div[@class='itemresult-wrapper']"); + waiter.until(ExpectedConditions.presenceOfAllElementsLocatedBy(find)); - int count = result.findElements(By.xpath("//div[@class='itemresult-wrapper']")).size(); + int count = result.findElements(find).size(); for (int i = 1; i <= count; i++) { results.add(getResult(i)); From 896bc480664c8e7226361044d8de021c8b9298a6 Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Thu, 15 Feb 2024 19:45:25 +1100 Subject: [PATCH 13/22] chore: add println --- .../tle/webtests/pageobject/searching/AbstractResultList.java | 1 + 1 file changed, 1 insertion(+) diff --git a/autotest/Tests/src/main/java/com/tle/webtests/pageobject/searching/AbstractResultList.java b/autotest/Tests/src/main/java/com/tle/webtests/pageobject/searching/AbstractResultList.java index 8d3f174c6f..f974f9f83c 100644 --- a/autotest/Tests/src/main/java/com/tle/webtests/pageobject/searching/AbstractResultList.java +++ b/autotest/Tests/src/main/java/com/tle/webtests/pageobject/searching/AbstractResultList.java @@ -125,6 +125,7 @@ public boolean doesResultExist(PrefixedName title) { public boolean doesResultExist(String title) { boolean found = false; int size = getResults().size(); + System.out.println("Hello protal test the size is: " + size); for (int i = 1; i <= size; i++) { found = doesResultExist(title, i); if (found) { From f56f54b388d3b3cf0478921fe4da0472c9b5da4f Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Fri, 16 Feb 2024 09:21:04 +1100 Subject: [PATCH 14/22] chore: remove waiter --- .../webtests/pageobject/portal/RecentContributionsSection.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autotest/Tests/src/main/java/com/tle/webtests/pageobject/portal/RecentContributionsSection.java b/autotest/Tests/src/main/java/com/tle/webtests/pageobject/portal/RecentContributionsSection.java index 0995f6f63a..a27eb9be82 100644 --- a/autotest/Tests/src/main/java/com/tle/webtests/pageobject/portal/RecentContributionsSection.java +++ b/autotest/Tests/src/main/java/com/tle/webtests/pageobject/portal/RecentContributionsSection.java @@ -16,7 +16,7 @@ public boolean recentContributionExists(String itemName) { ".//div[normalize-space(@class)='recent-items']//a[normalize-space(text())=" + quoteXPath(itemName) + "]"); - waiter.until(ExpectedConditions.visibilityOfElementLocated(recentContributionXpath)); + // waiter.until(ExpectedConditions.visibilityOfElementLocated(recentContributionXpath)); return isPresent(recentContributionXpath); } From 52186db2b49ba70ae788470bd8532fb538dbb62a Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Fri, 16 Feb 2024 14:00:06 +1100 Subject: [PATCH 15/22] chore: take screenshots --- .../java/com/tle/webtests/test/dashboard/PortalsTest.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java b/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java index 716e508aa0..5ac45ae177 100644 --- a/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java +++ b/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java @@ -4,6 +4,7 @@ import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; +import com.tle.webtests.framework.ScreenshotTaker; import com.tle.webtests.framework.TestInstitution; import com.tle.webtests.pageobject.HomePage; import com.tle.webtests.pageobject.portal.BrowsePortalEditPage; @@ -308,12 +309,18 @@ public void testRecentPortal() { wizard1.editbox(1, liveItemName); wizard1.save().publish(); + ScreenshotTaker.takeScreenshot( + context.getDriver(), this.testConfig.getScreenshotFolder(), "live", true); + String draftItemName = context.getFullName("draft item"); WizardPageTab wizard2 = new ContributePage(context).load().openWizard("Simple Controls Collection"); wizard2.editbox(1, draftItemName); wizard2.save().draft(); + ScreenshotTaker.takeScreenshot( + context.getDriver(), this.testConfig.getScreenshotFolder(), "draft", true); + // Check that the live item is displayed home = new MenuSection(context).home(); RecentContributionsSection recent = new RecentContributionsSection(context, recentName).get(); From e90636b73312263e80f5d08a8fb541d3dc9f8a0a Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Fri, 16 Feb 2024 15:25:49 +1100 Subject: [PATCH 16/22] chore: add more screenshots --- .../test/java/com/tle/webtests/test/dashboard/PortalsTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java b/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java index 5ac45ae177..eb7f2a8608 100644 --- a/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java +++ b/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java @@ -347,6 +347,9 @@ public void testRecentPortal() { wizard3.save().publish(); + ScreenshotTaker.takeScreenshot( + context.getDriver(), this.testConfig.getScreenshotFolder(), "query", true); + // Edit portlet for query option home = new MenuSection(context).home(); edit = recent.edit(portal); From 72d50e4212e38b1774fda66f2653c31343f5c251 Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Wed, 21 Feb 2024 10:49:27 +1100 Subject: [PATCH 17/22] revert: changes --- .../pages/advancedsearch/NewAdvancedSearchPage.java | 4 +--- .../pageobject/portal/RecentContributionsSection.java | 2 +- .../tle/webtests/pageobject/searching/AbstractResultList.java | 1 + 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/autotest/OldTests/src/test/java/io/github/openequella/pages/advancedsearch/NewAdvancedSearchPage.java b/autotest/OldTests/src/test/java/io/github/openequella/pages/advancedsearch/NewAdvancedSearchPage.java index 22cb370012..2680b28532 100644 --- a/autotest/OldTests/src/test/java/io/github/openequella/pages/advancedsearch/NewAdvancedSearchPage.java +++ b/autotest/OldTests/src/test/java/io/github/openequella/pages/advancedsearch/NewAdvancedSearchPage.java @@ -140,9 +140,7 @@ public void selectUser(String username) { WebElement userSelector = driver.findElement(By.id("wiz-12-userselector")); // Open the dialog and search for the target user. - WebElement button = userSelector.findElement(By.tagName("button")); - scrollToElement(button); - button.click(); + userSelector.findElement(By.tagName("button")).click(); WebElement dialog = driver.findElement(By.xpath("//div[@role='dialog']")); WebElement input = dialog.findElement(By.tagName("input")); diff --git a/autotest/Tests/src/main/java/com/tle/webtests/pageobject/portal/RecentContributionsSection.java b/autotest/Tests/src/main/java/com/tle/webtests/pageobject/portal/RecentContributionsSection.java index a27eb9be82..0995f6f63a 100644 --- a/autotest/Tests/src/main/java/com/tle/webtests/pageobject/portal/RecentContributionsSection.java +++ b/autotest/Tests/src/main/java/com/tle/webtests/pageobject/portal/RecentContributionsSection.java @@ -16,7 +16,7 @@ public boolean recentContributionExists(String itemName) { ".//div[normalize-space(@class)='recent-items']//a[normalize-space(text())=" + quoteXPath(itemName) + "]"); - // waiter.until(ExpectedConditions.visibilityOfElementLocated(recentContributionXpath)); + waiter.until(ExpectedConditions.visibilityOfElementLocated(recentContributionXpath)); return isPresent(recentContributionXpath); } diff --git a/autotest/Tests/src/main/java/com/tle/webtests/pageobject/searching/AbstractResultList.java b/autotest/Tests/src/main/java/com/tle/webtests/pageobject/searching/AbstractResultList.java index 9face8a02f..473e5dea22 100644 --- a/autotest/Tests/src/main/java/com/tle/webtests/pageobject/searching/AbstractResultList.java +++ b/autotest/Tests/src/main/java/com/tle/webtests/pageobject/searching/AbstractResultList.java @@ -10,6 +10,7 @@ import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.SearchContext; +import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebElement; import org.openqa.selenium.internal.WrapsElement; import org.openqa.selenium.support.ui.ExpectedConditions; From c3be0bd76be39f166c68bb3586eeb2592393a9bf Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Thu, 22 Feb 2024 11:49:42 +1100 Subject: [PATCH 18/22] chore: wait for success message --- .../webtests/test/dashboard/PortalsTest.java | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java b/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java index eb7f2a8608..14c039dc87 100644 --- a/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java +++ b/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java @@ -4,7 +4,6 @@ import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; -import com.tle.webtests.framework.ScreenshotTaker; import com.tle.webtests.framework.TestInstitution; import com.tle.webtests.pageobject.HomePage; import com.tle.webtests.pageobject.portal.BrowsePortalEditPage; @@ -33,6 +32,10 @@ import com.tle.webtests.pageobject.wizard.ContributePage; import com.tle.webtests.pageobject.wizard.WizardPageTab; import com.tle.webtests.test.AbstractCleanupTest; +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.ExpectedCondition; +import org.openqa.selenium.support.ui.ExpectedConditions; import org.testng.Assert; import org.testng.annotations.Test; @@ -287,6 +290,10 @@ public void testFreemarkerPortal() { @Test public void testRecentPortal() { + ExpectedCondition successMessage = + ExpectedConditions.visibilityOfElementLocated( + By.xpath("//*[contains(text(), 'Successfully saved')]")); + HomePage home = dash(); String recentName = context.getFullName("Recent Contributions Portal"); @@ -307,19 +314,13 @@ public void testRecentPortal() { WizardPageTab wizard1 = new ContributePage(context).load().openWizard(GENERIC_TESTING_COLLECTION); wizard1.editbox(1, liveItemName); - wizard1.save().publish(); - - ScreenshotTaker.takeScreenshot( - context.getDriver(), this.testConfig.getScreenshotFolder(), "live", true); + wizard1.save().publish().getWaiter().until(successMessage); String draftItemName = context.getFullName("draft item"); WizardPageTab wizard2 = new ContributePage(context).load().openWizard("Simple Controls Collection"); wizard2.editbox(1, draftItemName); - wizard2.save().draft(); - - ScreenshotTaker.takeScreenshot( - context.getDriver(), this.testConfig.getScreenshotFolder(), "draft", true); + wizard2.save().draft().getWaiter().until(successMessage); // Check that the live item is displayed home = new MenuSection(context).home(); @@ -345,10 +346,7 @@ public void testRecentPortal() { wizard3.editbox(1, itemToQuery); wizard3.editbox(2, description); - wizard3.save().publish(); - - ScreenshotTaker.takeScreenshot( - context.getDriver(), this.testConfig.getScreenshotFolder(), "query", true); + wizard3.save().publish().getWaiter().until(successMessage); // Edit portlet for query option home = new MenuSection(context).home(); From 458ffac433994e056680268bef4d022f7b1a6a70 Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Fri, 23 Feb 2024 08:49:26 +1100 Subject: [PATCH 19/22] chore: add screeshots --- .../com/tle/webtests/test/dashboard/PortalsTest.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java b/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java index 14c039dc87..799f3c5b1d 100644 --- a/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java +++ b/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java @@ -4,6 +4,7 @@ import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; +import com.tle.webtests.framework.ScreenshotTaker; import com.tle.webtests.framework.TestInstitution; import com.tle.webtests.pageobject.HomePage; import com.tle.webtests.pageobject.portal.BrowsePortalEditPage; @@ -331,7 +332,10 @@ public void testRecentPortal() { RecentContributionsEditPage edit = recent.edit(portal); edit.setStatus("draft"); edit.checkSelectedCollection(); + ScreenshotTaker.takeScreenshot( + context.getDriver(), this.testConfig.getScreenshotFolder(), "edit", true); edit.save(new HomePage(context)); + ; // Check that the draft item is displayed home = new MenuSection(context).home(); @@ -354,7 +358,10 @@ public void testRecentPortal() { edit.setQuery("query item"); edit.setStatus("live"); edit.checkSelectedCollection(); + ScreenshotTaker.takeScreenshot( + context.getDriver(), this.testConfig.getScreenshotFolder(), "edit2", true); edit.save(new HomePage(context)); + // Check that the queried item is displayed home = new MenuSection(context).home(); recent = new RecentContributionsSection(context, recentName).get(); @@ -367,6 +374,8 @@ public void testRecentPortal() { edit = recent.edit(portal); edit.setDisplayTitleOnly(true); edit.checkSelectedCollection(); + ScreenshotTaker.takeScreenshot( + context.getDriver(), this.testConfig.getScreenshotFolder(), "edit3", true); edit.save(new HomePage(context)); // Check that the description not displayed From 97bb495c59e924e0d8f2f056208c1bdb949c4f29 Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Thu, 29 Feb 2024 09:07:25 +1100 Subject: [PATCH 20/22] chore: add screenshots --- .../java/com/tle/webtests/test/dashboard/PortalsTest.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java b/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java index 799f3c5b1d..9349c0ba72 100644 --- a/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java +++ b/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java @@ -317,12 +317,18 @@ public void testRecentPortal() { wizard1.editbox(1, liveItemName); wizard1.save().publish().getWaiter().until(successMessage); + ScreenshotTaker.takeScreenshot( + context.getDriver(), this.testConfig.getScreenshotFolder(), "live item", true); + String draftItemName = context.getFullName("draft item"); WizardPageTab wizard2 = new ContributePage(context).load().openWizard("Simple Controls Collection"); wizard2.editbox(1, draftItemName); wizard2.save().draft().getWaiter().until(successMessage); + ScreenshotTaker.takeScreenshot( + context.getDriver(), this.testConfig.getScreenshotFolder(), "draft item", true); + // Check that the live item is displayed home = new MenuSection(context).home(); RecentContributionsSection recent = new RecentContributionsSection(context, recentName).get(); @@ -335,7 +341,6 @@ public void testRecentPortal() { ScreenshotTaker.takeScreenshot( context.getDriver(), this.testConfig.getScreenshotFolder(), "edit", true); edit.save(new HomePage(context)); - ; // Check that the draft item is displayed home = new MenuSection(context).home(); From 871de747908907183f3b6be38bad0585f579186a Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Thu, 29 Feb 2024 14:56:34 +1100 Subject: [PATCH 21/22] chore: add sleep --- .../webtests/test/dashboard/PortalsTest.java | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java b/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java index 9349c0ba72..bab332a0ae 100644 --- a/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java +++ b/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java @@ -4,7 +4,6 @@ import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; -import com.tle.webtests.framework.ScreenshotTaker; import com.tle.webtests.framework.TestInstitution; import com.tle.webtests.pageobject.HomePage; import com.tle.webtests.pageobject.portal.BrowsePortalEditPage; @@ -290,7 +289,7 @@ public void testFreemarkerPortal() { } @Test - public void testRecentPortal() { + public void testRecentPortal() throws InterruptedException { ExpectedCondition successMessage = ExpectedConditions.visibilityOfElementLocated( By.xpath("//*[contains(text(), 'Successfully saved')]")); @@ -317,8 +316,8 @@ public void testRecentPortal() { wizard1.editbox(1, liveItemName); wizard1.save().publish().getWaiter().until(successMessage); - ScreenshotTaker.takeScreenshot( - context.getDriver(), this.testConfig.getScreenshotFolder(), "live item", true); + // ScreenshotTaker.takeScreenshot( + // context.getDriver(), this.testConfig.getScreenshotFolder(), "live item", true); String draftItemName = context.getFullName("draft item"); WizardPageTab wizard2 = @@ -326,9 +325,10 @@ public void testRecentPortal() { wizard2.editbox(1, draftItemName); wizard2.save().draft().getWaiter().until(successMessage); - ScreenshotTaker.takeScreenshot( - context.getDriver(), this.testConfig.getScreenshotFolder(), "draft item", true); + // ScreenshotTaker.takeScreenshot( + // context.getDriver(), this.testConfig.getScreenshotFolder(), "draft item", true); + Thread.sleep(1000); // Check that the live item is displayed home = new MenuSection(context).home(); RecentContributionsSection recent = new RecentContributionsSection(context, recentName).get(); @@ -338,10 +338,12 @@ public void testRecentPortal() { RecentContributionsEditPage edit = recent.edit(portal); edit.setStatus("draft"); edit.checkSelectedCollection(); - ScreenshotTaker.takeScreenshot( - context.getDriver(), this.testConfig.getScreenshotFolder(), "edit", true); + // ScreenshotTaker.takeScreenshot( + // context.getDriver(), this.testConfig.getScreenshotFolder(), "edit", true); edit.save(new HomePage(context)); + Thread.sleep(1000); + // Check that the draft item is displayed home = new MenuSection(context).home(); recent = new RecentContributionsSection(context, recentName).get(); @@ -363,10 +365,12 @@ public void testRecentPortal() { edit.setQuery("query item"); edit.setStatus("live"); edit.checkSelectedCollection(); - ScreenshotTaker.takeScreenshot( - context.getDriver(), this.testConfig.getScreenshotFolder(), "edit2", true); + // ScreenshotTaker.takeScreenshot( + // context.getDriver(), this.testConfig.getScreenshotFolder(), "edit2", true); edit.save(new HomePage(context)); + // Thread.sleep(1000); + // Check that the queried item is displayed home = new MenuSection(context).home(); recent = new RecentContributionsSection(context, recentName).get(); @@ -379,10 +383,12 @@ public void testRecentPortal() { edit = recent.edit(portal); edit.setDisplayTitleOnly(true); edit.checkSelectedCollection(); - ScreenshotTaker.takeScreenshot( - context.getDriver(), this.testConfig.getScreenshotFolder(), "edit3", true); + // ScreenshotTaker.takeScreenshot( + // context.getDriver(), this.testConfig.getScreenshotFolder(), "edit3", true); edit.save(new HomePage(context)); + // Thread.sleep(1000); + // Check that the description not displayed home = new MenuSection(context).home(); recent = new RecentContributionsSection(context, recentName).get(); From 658342864b467aa1f4e8579b9a0f3139aa6844a2 Mon Sep 17 00:00:00 2001 From: edalex-yinzi Date: Fri, 1 Mar 2024 15:23:20 +1100 Subject: [PATCH 22/22] refactor: use custom waiter --- .../webtests/test/dashboard/PortalsTest.java | 52 ++++++++----------- .../portal/RecentContributionsSection.java | 1 - 2 files changed, 23 insertions(+), 30 deletions(-) diff --git a/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java b/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java index bab332a0ae..a19bcca41f 100644 --- a/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java +++ b/autotest/OldTests/src/test/java/com/tle/webtests/test/dashboard/PortalsTest.java @@ -33,9 +33,11 @@ import com.tle.webtests.pageobject.wizard.WizardPageTab; import com.tle.webtests.test.AbstractCleanupTest; import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.Assert; import org.testng.annotations.Test; @@ -314,39 +316,27 @@ public void testRecentPortal() throws InterruptedException { WizardPageTab wizard1 = new ContributePage(context).load().openWizard(GENERIC_TESTING_COLLECTION); wizard1.editbox(1, liveItemName); - wizard1.save().publish().getWaiter().until(successMessage); - - // ScreenshotTaker.takeScreenshot( - // context.getDriver(), this.testConfig.getScreenshotFolder(), "live item", true); + wizard1.save().publish(); String draftItemName = context.getFullName("draft item"); + WizardPageTab wizard2 = new ContributePage(context).load().openWizard("Simple Controls Collection"); wizard2.editbox(1, draftItemName); - wizard2.save().draft().getWaiter().until(successMessage); - - // ScreenshotTaker.takeScreenshot( - // context.getDriver(), this.testConfig.getScreenshotFolder(), "draft item", true); + WebDriverWait waiter = wizard2.save().draft().getWaiter(); - Thread.sleep(1000); // Check that the live item is displayed - home = new MenuSection(context).home(); - RecentContributionsSection recent = new RecentContributionsSection(context, recentName).get(); - assertTrue(recent.recentContributionExists(liveItemName)); + assertTrue(waiter.until(waitForItem(recentName, liveItemName))); // Edit the portal + new MenuSection(context).home(); + RecentContributionsSection recent = new RecentContributionsSection(context, recentName).get(); RecentContributionsEditPage edit = recent.edit(portal); edit.setStatus("draft"); edit.checkSelectedCollection(); - // ScreenshotTaker.takeScreenshot( - // context.getDriver(), this.testConfig.getScreenshotFolder(), "edit", true); edit.save(new HomePage(context)); - Thread.sleep(1000); - // Check that the draft item is displayed - home = new MenuSection(context).home(); - recent = new RecentContributionsSection(context, recentName).get(); assertTrue(recent.recentContributionExists(draftItemName)); String itemToQuery = context.getFullName("query item"); @@ -365,16 +355,12 @@ public void testRecentPortal() throws InterruptedException { edit.setQuery("query item"); edit.setStatus("live"); edit.checkSelectedCollection(); - // ScreenshotTaker.takeScreenshot( - // context.getDriver(), this.testConfig.getScreenshotFolder(), "edit2", true); edit.save(new HomePage(context)); - // Thread.sleep(1000); - // Check that the queried item is displayed - home = new MenuSection(context).home(); - recent = new RecentContributionsSection(context, recentName).get(); assertTrue(recent.recentContributionExists(itemToQuery)); + new MenuSection(context).home(); + recent = new RecentContributionsSection(context, recentName).get(); assertTrue(recent.descriptionExists(description, true)); // Edit portlet for description option @@ -383,14 +369,10 @@ public void testRecentPortal() throws InterruptedException { edit = recent.edit(portal); edit.setDisplayTitleOnly(true); edit.checkSelectedCollection(); - // ScreenshotTaker.takeScreenshot( - // context.getDriver(), this.testConfig.getScreenshotFolder(), "edit3", true); edit.save(new HomePage(context)); - // Thread.sleep(1000); - // Check that the description not displayed - home = new MenuSection(context).home(); + new MenuSection(context).home(); recent = new RecentContributionsSection(context, recentName).get(); assertFalse(recent.descriptionExists(description, false)); } @@ -470,4 +452,16 @@ protected void cleanupAfterClass() throws Exception { new DashboardAdminPage(context).load().deleteAll(prefix); super.cleanupAfterClass(); } + + private ExpectedCondition waitForItem(String sectionTitle, String itemName) { + return new ExpectedCondition() { + @Override + public Boolean apply(WebDriver driver) { + new MenuSection(context).home(); + RecentContributionsSection recent = + new RecentContributionsSection(context, sectionTitle).get(); + return recent.recentContributionExists(itemName); + } + }; + } } diff --git a/autotest/Tests/src/main/java/com/tle/webtests/pageobject/portal/RecentContributionsSection.java b/autotest/Tests/src/main/java/com/tle/webtests/pageobject/portal/RecentContributionsSection.java index 0995f6f63a..6fc902f8d4 100644 --- a/autotest/Tests/src/main/java/com/tle/webtests/pageobject/portal/RecentContributionsSection.java +++ b/autotest/Tests/src/main/java/com/tle/webtests/pageobject/portal/RecentContributionsSection.java @@ -16,7 +16,6 @@ public boolean recentContributionExists(String itemName) { ".//div[normalize-space(@class)='recent-items']//a[normalize-space(text())=" + quoteXPath(itemName) + "]"); - waiter.until(ExpectedConditions.visibilityOfElementLocated(recentContributionXpath)); return isPresent(recentContributionXpath); }