Skip to content

Commit d3fc912

Browse files
committed
[MTE-4988] - refactor bookmark tests with POM
1 parent 1d367f0 commit d3fc912

11 files changed

+311
-5
lines changed

firefox-ios/firefox-ios-tests/Tests/FullFunctionalTestPlan.xctestplan

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,13 @@
100100
"BookmarksTests\/testAddBookmark()",
101101
"BookmarksTests\/testAddNewMarker()",
102102
"BookmarksTests\/testBookmarkLibraryAddDeleteBookmark()",
103+
"BookmarksTests\/testBookmarkLibraryAddDeleteBookmark_TAE()",
103104
"BookmarksTests\/testBookmarkLibraryAddDeleteBookmark_tabTrayExperimentOff()",
104105
"BookmarksTests\/testBookmarkLibraryAddDeleteBookmark_tabTrayExperimentOn()",
105106
"BookmarksTests\/testBookmarksAwesomeBar()",
107+
"BookmarksTests\/testBookmarksAwesomeBar_TAE()",
106108
"BookmarksTests\/testBookmarksToggleIsAvailable()",
109+
"BookmarksTests\/testBookmarksToggleIsAvailable_TAE()",
107110
"BookmarksTests\/testDeleteBookmarkSwiping()",
108111
"BookmarksTests\/testDesktopFoldersArePresent()",
109112
"BookmarksTests\/testLongTapRecentlySavedLink_tabTrayExperimentOff()",
@@ -266,6 +269,7 @@
266269
"SearchTests\/testOpenTabsInSearchSuggestions()",
267270
"SearchTests\/testSearchEngine()",
268271
"SearchTests\/testSearchStartAfterTypingTwoWords()",
272+
"SettingsTests\/testImageOnOff()",
269273
"SettingsTests\/testImageOnOff_tabTrayExperimentOff()",
270274
"SettingsTests\/testImageOnOff_tabTrayExperimentOn()",
271275
"SettingsTests\/testSettingsOptionSubtitles()",

firefox-ios/firefox-ios-tests/Tests/Smoketest.xctestplan

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,12 @@
133133
"BookmarksTests\/testAddNewFolder()",
134134
"BookmarksTests\/testAddNewMarker()",
135135
"BookmarksTests\/testBookmark()",
136+
"BookmarksTests\/testBookmarkLibraryAddDeleteBookmark_TAE()",
136137
"BookmarksTests\/testBookmarkingUI()",
137138
"BookmarksTests\/testBookmarkingUI_tabTrayExperimentOff()",
138139
"BookmarksTests\/testBookmarkingUI_tabTrayExperimentOn()",
140+
"BookmarksTests\/testBookmarksAwesomeBar_TAE()",
141+
"BookmarksTests\/testBookmarksToggleIsAvailable_TAE()",
139142
"BookmarksTests\/testDeleteBookmarkContextMenu()",
140143
"BookmarksTests\/testDeleteBookmarkSwiping()",
141144
"BookmarksTests\/testDesktopFoldersArePresent()",

firefox-ios/firefox-ios-tests/Tests/TAESmokeTestPlan.xctestplan

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,20 +74,23 @@
7474
"AuthenticationTest",
7575
"AuthenticationTest\/testBasicHTTPAuthenticationPromptVisibleAndLogin()",
7676
"BaseTestCase",
77-
"BookmarksTests",
7877
"BookmarksTests\/testAddNewFolder()",
7978
"BookmarksTests\/testBookmark()",
79+
"BookmarksTests\/testBookmarkLibraryAddDeleteBookmark()",
8080
"BookmarksTests\/testBookmarkLibraryAddDeleteBookmark_tabTrayExperimentOff()",
8181
"BookmarksTests\/testBookmarkLibraryAddDeleteBookmark_tabTrayExperimentOn()",
82+
"BookmarksTests\/testBookmarkingUI()",
8283
"BookmarksTests\/testBookmarkingUI_tabTrayExperimentOff()",
8384
"BookmarksTests\/testBookmarkingUI_tabTrayExperimentOn()",
8485
"BookmarksTests\/testBookmarksAwesomeBar()",
8586
"BookmarksTests\/testBookmarksToggleIsAvailable()",
8687
"BookmarksTests\/testDeleteBookmarkContextMenu()",
8788
"BookmarksTests\/testEditBookmark()",
89+
"BookmarksTests\/testLongTapRecentlySavedLink()",
8890
"BookmarksTests\/testLongTapRecentlySavedLink_tabTrayExperimentOff()",
8991
"BookmarksTests\/testLongTapRecentlySavedLink_tabTrayExperimentOn()",
9092
"BookmarksTests\/testRecentlyBookmarked()",
93+
"BookmarksTests\/testValidateBookmarksOptions()",
9194
"BrowsingPDFTests\/testBookmarkPDF()",
9295
"BrowsingPDFTests\/testLongPressOnPDFLink()",
9396
"BrowsingPDFTests\/testLongPressOnPDFLinkToAddToReadingList()",

firefox-ios/firefox-ios-tests/Tests/XCUITests/BookmarksTests.swift

Lines changed: 132 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,23 @@ let urlLabelExample_3 = "Example Domain"
1111
let url_3 = "localhost:\(serverPort)/test-fixture/test-example.html"
1212

1313
class BookmarksTests: FeatureFlaggedTestBase {
14+
private var browserScreen: BrowserScreen!
15+
private var topSitesScreen: TopSitesScreen!
16+
private var toolbarScreen: ToolbarScreen!
17+
private var libraryScreen: LibraryScreen!
18+
private var homepageSettingsScreen: HomepageSettingsScreen!
19+
private var firefoxHomeScreen: FirefoxHomePageScreen!
20+
21+
override func setUp() {
22+
super.setUp()
23+
topSitesScreen = TopSitesScreen(app: app)
24+
browserScreen = BrowserScreen(app: app)
25+
toolbarScreen = ToolbarScreen(app: app)
26+
libraryScreen = LibraryScreen(app: app)
27+
homepageSettingsScreen = HomepageSettingsScreen(app: app)
28+
firefoxHomeScreen = FirefoxHomePageScreen(app: app)
29+
}
30+
1431
override func tearDown() {
1532
XCUIDevice.shared.orientation = .portrait
1633
super.tearDown()
@@ -169,6 +186,46 @@ class BookmarksTests: FeatureFlaggedTestBase {
169186
XCTAssertNotEqual(app.tables["SiteTable"].cells.count, 0)
170187
}
171188

189+
// https://mozilla.testrail.io/index.php?/cases/view/2306907
190+
// Smoketest
191+
func testBookmarksAwesomeBar_TAE() {
192+
app.launch()
193+
navigator.nowAt(HomePanelsScreen)
194+
navigator.goto(URLBarOpen)
195+
XCTExpectFailure("The app was not launched", strict: false) {
196+
topSitesScreen.assertVisible()
197+
}
198+
browserScreen.tapOnAddressBar()
199+
browserScreen.typeOnSearchBar(text: "www.google")
200+
browserScreen.assertTypeSuggestText(text: "www.google")
201+
browserScreen.typeOnSearchBar(text: ".com")
202+
browserScreen.typeOnSearchBar(text: "\r")
203+
waitUntilPageLoad()
204+
205+
// Enter new url
206+
navigator.nowAt(BrowserTab)
207+
navigator.performAction(Action.OpenNewTabFromTabTray)
208+
navigator.nowAt(HomePanelsScreen)
209+
navigator.goto(URLBarOpen)
210+
browserScreen.tapOnAddressBar()
211+
browserScreen.typeOnSearchBar(text: "https://mozilla.org")
212+
213+
// Site table exists but is empty
214+
browserScreen.assertNumberOfSuggestedLines(expectedLines: 0)
215+
browserScreen.typeOnSearchBar(text: "\r")
216+
waitUntilPageLoad()
217+
218+
// Add page to bookmarks
219+
bookmark_TAE()
220+
221+
// Now the site should be suggested
222+
navigator.performAction(Action.AcceptClearPrivateData)
223+
navigator.goto(BrowserTab)
224+
browserScreen.tapOnAddressBar()
225+
browserScreen.typeOnSearchBar(text: "mozilla.org")
226+
browserScreen.assertTypeSuggestText(text: "mozilla.org")
227+
}
228+
172229
// https://mozilla.testrail.io/index.php?/cases/view/2306914
173230
func testAddNewFolder() {
174231
app.launch()
@@ -238,7 +295,7 @@ class BookmarksTests: FeatureFlaggedTestBase {
238295
}
239296

240297
private func typeOnSearchBar(text: String) {
241-
app.textFields[AccessibilityIdentifiers.Browser.AddressToolbar.searchTextField].waitAndTap()
298+
urlBarAddress.waitAndTap()
242299
urlBarAddress.typeText(text)
243300
}
244301

@@ -266,6 +323,7 @@ class BookmarksTests: FeatureFlaggedTestBase {
266323
// Check that it appears in Bookmarks panel
267324
navigator.goto(LibraryPanel_Bookmarks)
268325
mozWaitForElementToExist(app.tables["Bookmarks List"])
326+
XCTAssertEqual(app.tables["Bookmarks List"].cells.count, 1)
269327

270328
// Delete the Bookmark added, check it is removed
271329
app.tables["Bookmarks List"].cells.staticTexts["Example Domain"].swipeLeft()
@@ -278,6 +336,39 @@ class BookmarksTests: FeatureFlaggedTestBase {
278336
XCTAssertEqual(app.tables[bookmarkList].label, "Empty list")
279337
}
280338

339+
// https://mozilla.testrail.io/index.php?/cases/view/2306909
340+
// Smoketest
341+
func testBookmarkLibraryAddDeleteBookmark_TAE() {
342+
app.launch()
343+
navigator.nowAt(NewTabScreen)
344+
toolbarScreen.assertTabsButtonExists()
345+
navigator.goto(LibraryPanel_Bookmarks)
346+
libraryScreen.assertBookmarkList()
347+
libraryScreen.assertBookmarkListCount(numberOfEntries: 0)
348+
349+
// Add a bookmark
350+
navigator.nowAt(LibraryPanel_Bookmarks)
351+
navigator.goto(HomePanelsScreen)
352+
navigator.goto(URLBarOpen)
353+
navigator.openURL(url_3)
354+
waitUntilPageLoad()
355+
navigator.nowAt(BrowserTab)
356+
bookmark_TAE()
357+
358+
// Check that it appears in Bookmarks panel
359+
navigator.goto(LibraryPanel_Bookmarks)
360+
libraryScreen.assertBookmarkList()
361+
libraryScreen.assertBookmarkListCount(numberOfEntries: 1)
362+
363+
// Delete the Bookmark added, check it is removed
364+
libraryScreen.swipeAndDeleteBookmark(entryName: urlLabelExample_3)
365+
366+
// Check that the bookmark was deleted by ensuring an element of the empty state is visible
367+
libraryScreen.assertBookmarkList()
368+
libraryScreen.assertEmptyStateSignInButtonExists()
369+
libraryScreen.assertBookmarkListLabel(label: "Empty list")
370+
}
371+
281372
// https://mozilla.testrail.io/index.php?/cases/view/2306911
282373
func testRecentlyBookmarked() {
283374
app.launch()
@@ -391,6 +482,39 @@ class BookmarksTests: FeatureFlaggedTestBase {
391482
mozWaitForElementToExist(app.cells["BookmarksCell"])
392483
}
393484

485+
// https://mozilla.testrail.io/index.php?/cases/view/2784448
486+
// Smoketest
487+
func testBookmarksToggleIsAvailable_TAE() throws {
488+
addLaunchArgument(jsonFileName: "homepageRedesignOff", featureName: "homepage-redesign-feature")
489+
app.launch()
490+
navigator.openURL(url_3)
491+
toolbarScreen.assertTabsButtonExists()
492+
navigator.nowAt(BrowserTab)
493+
bookmark_TAE()
494+
navigator.nowAt(NewTabScreen)
495+
navigator.goto(HomeSettings)
496+
homepageSettingsScreen.assertBookmarkToggleExists()
497+
homepageSettingsScreen.disableBookmarkToggle()
498+
homepageSettingsScreen.assertBookmarkToggleIsDisabled()
499+
navigator.nowAt(HomeSettings)
500+
navigator.goto(NewTabScreen)
501+
navigator.goto(TabTray)
502+
navigator.performAction(Action.OpenNewTabFromTabTray)
503+
browserScreen.tapCancelButtonIfExist()
504+
firefoxHomeScreen.assertBookmarksItemCellToNotExist()
505+
navigator.nowAt(BrowserTab)
506+
navigator.goto(HomeSettings)
507+
homepageSettingsScreen.assertBookmarkToggleExists()
508+
homepageSettingsScreen.enableBookmarkToggle()
509+
homepageSettingsScreen.assertBookmarkToggleIsEnabled()
510+
navigator.nowAt(HomeSettings)
511+
navigator.goto(NewTabScreen)
512+
navigator.goto(TabTray)
513+
navigator.performAction(Action.OpenNewTabFromTabTray)
514+
browserScreen.tapCancelButtonIfExist()
515+
firefoxHomeScreen.assertBookmarksItemCellExist()
516+
}
517+
394518
private func validateLongTapOptionsFromBookmarkLink(isExperiment: Bool) {
395519
// Go to "Recently saved" section and long tap on one of the links
396520
navigator.openURL(path(forTestPage: url_2["url"]!))
@@ -479,4 +603,11 @@ class BookmarksTests: FeatureFlaggedTestBase {
479603
let url = app.textFields[AccessibilityIdentifiers.Browser.AddressToolbar.searchTextField]
480604
mozWaitForValueContains(url, value: "localhost")
481605
}
606+
607+
func bookmark_TAE() {
608+
browserScreen.assertAddressBar_LockIconExist()
609+
navigator.nowAt(BrowserTab)
610+
navigator.goto(BrowserTabMenu)
611+
navigator.performAction(Action.Bookmark)
612+
}
482613
}

firefox-ios/firefox-ios-tests/Tests/XCUITests/PageScreens/BrowserScreen.swift

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,10 @@ final class BrowserScreen {
158158
urlElement.waitAndTap()
159159
}
160160

161+
func typeOnSearchBar(text: String) {
162+
addressBar.typeText(text)
163+
}
164+
161165
func assertCancelButtonOnUrlBarExist() {
162166
BaseTestCase().mozWaitForElementToExist(cancelButton)
163167
}
@@ -219,4 +223,14 @@ final class BrowserScreen {
219223
BaseTestCase().mozWaitForElementToExist(firstLink)
220224
firstLink.press(forDuration: 1)
221225
}
226+
227+
func assertTypeSuggestText(text: String) {
228+
let suggestedText = app.tables.firstMatch.cells.staticTexts[text]
229+
BaseTestCase().mozWaitForElementToExist(suggestedText)
230+
}
231+
232+
func assertNumberOfSuggestedLines(expectedLines: Int) {
233+
let suggestedLines = app.tables.firstMatch.cells
234+
XCTAssertEqual(suggestedLines.count, expectedLines)
235+
}
222236
}

firefox-ios/firefox-ios-tests/Tests/XCUITests/PageScreens/FirefoxHomePageScreen.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,14 @@ final class FirefoxHomePageScreen {
1818

1919
BaseTestCase().mozWaitForElementToExist(topSites_ItemCell, timeout: timeout)
2020
}
21+
22+
func assertBookmarksItemCellToNotExist(timeout: TimeInterval = TIMEOUT) {
23+
let bookmarks_ItemCell = sel.BOOKMARKS_ITEMCELL.element(in: app)
24+
BaseTestCase().mozWaitForElementToNotExist(bookmarks_ItemCell, timeout: timeout)
25+
}
26+
27+
func assertBookmarksItemCellExist(timeout: TimeInterval = TIMEOUT) {
28+
let bookmarks_ItemCell = sel.BOOKMARKS_ITEMCELL.element(in: app)
29+
BaseTestCase().mozWaitForElementToExist(bookmarks_ItemCell, timeout: timeout)
30+
}
2131
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// This Source Code Form is subject to the terms of the Mozilla Public
2+
// License, v. 2.0. If a copy of the MPL was not distributed with this
3+
// file, You can obtain one at http://mozilla.org/MPL/2.0/
4+
5+
import XCTest
6+
7+
final class HomepageSettingsScreen {
8+
private let app: XCUIApplication
9+
private let sel: HomepageSettingsSelectorSet
10+
11+
init(app: XCUIApplication, selectors: HomepageSettingsSelectorSet = HomepageSettingsSelectors()) {
12+
self.app = app
13+
self.sel = selectors
14+
}
15+
16+
private var bookmarkToggle: XCUIElement { sel.BOOKMARK_TOGGLE.element(in: app) }
17+
18+
// helper to centralize the duplicated lookup
19+
private var bookmarkSwitch: XCUIElement {
20+
let settingTable = sel.HOMEPAGE_SETTINGS_TABLE.element(in: app)
21+
let toggle = sel.BOOKMARK_TOGGLE.value
22+
return settingTable.cells.switches[toggle]
23+
}
24+
25+
func assertBookmarkToggleExists(timeout: TimeInterval = TIMEOUT) {
26+
BaseTestCase().mozWaitForElementToExist(bookmarkSwitch)
27+
}
28+
29+
func disableBookmarkToggle() {
30+
let switchElement = bookmarkSwitch
31+
if switchElement.value as? String == "1" {
32+
switchElement.waitAndTap()
33+
}
34+
}
35+
36+
func enableBookmarkToggle() {
37+
let switchElement = bookmarkSwitch
38+
if switchElement.value as? String == "0" {
39+
switchElement.waitAndTap()
40+
}
41+
}
42+
43+
func assertBookmarkToggleIsEnabled() {
44+
let switchElement = bookmarkSwitch
45+
XCTAssertEqual(switchElement.value as? String, "1", "Bookmark toggle is not enabled")
46+
}
47+
48+
func assertBookmarkToggleIsDisabled() {
49+
let switchElement = bookmarkSwitch
50+
XCTAssertEqual(switchElement.value as? String, "0", "Bookmark toggle is not disabled")
51+
}
52+
}

firefox-ios/firefox-ios-tests/Tests/XCUITests/PageScreens/LibraryScreen.swift

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,38 @@ final class LibraryScreen {
2222
bookmarksTable.staticTexts[name]
2323
], timeout: timeout)
2424
}
25+
26+
func assertBookmarkList() {
27+
let bookmarksTable = sel.BOOKMARKS_LIST.element(in: app)
28+
BaseTestCase().mozWaitForElementToExist(bookmarksTable)
29+
}
30+
31+
func assertBookmarkListCount(numberOfEntries: Int) {
32+
let bookmarksTable = sel.BOOKMARKS_LIST.element(in: app)
33+
XCTAssertEqual(bookmarksTable.cells.count, numberOfEntries)
34+
}
35+
36+
func swipeBookmarkEntry(entryName: String) {
37+
let bookmarksTable = sel.BOOKMARKS_LIST.element(in: app)
38+
bookmarksTable.cells.staticTexts[entryName].swipeLeft()
39+
}
40+
41+
func tapDeleteBookmarkButton() {
42+
let deleteButton = sel.DELETE_BUTTON.element(in: app)
43+
deleteButton.waitAndTap()
44+
}
45+
46+
func swipeAndDeleteBookmark(entryName: String) {
47+
swipeBookmarkEntry(entryName: entryName)
48+
tapDeleteBookmarkButton()
49+
}
50+
51+
func assertEmptyStateSignInButtonExists() {
52+
BaseTestCase().mozWaitForElementToExist(sel.SIGN_IN_BUTTON.element(in: app))
53+
}
54+
55+
func assertBookmarkListLabel(label: String) {
56+
let bookmarksTable = sel.BOOKMARKS_LIST.element(in: app)
57+
XCTAssertEqual(bookmarksTable.label, "Empty list")
58+
}
2559
}

0 commit comments

Comments
 (0)