Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -100,10 +100,13 @@
"BookmarksTests\/testAddBookmark()",
"BookmarksTests\/testAddNewMarker()",
"BookmarksTests\/testBookmarkLibraryAddDeleteBookmark()",
"BookmarksTests\/testBookmarkLibraryAddDeleteBookmark_TAE()",
"BookmarksTests\/testBookmarkLibraryAddDeleteBookmark_tabTrayExperimentOff()",
"BookmarksTests\/testBookmarkLibraryAddDeleteBookmark_tabTrayExperimentOn()",
"BookmarksTests\/testBookmarksAwesomeBar()",
"BookmarksTests\/testBookmarksAwesomeBar_TAE()",
"BookmarksTests\/testBookmarksToggleIsAvailable()",
"BookmarksTests\/testBookmarksToggleIsAvailable_TAE()",
"BookmarksTests\/testDeleteBookmarkSwiping()",
"BookmarksTests\/testDesktopFoldersArePresent()",
"BookmarksTests\/testLongTapRecentlySavedLink_tabTrayExperimentOff()",
Expand Down Expand Up @@ -266,6 +269,7 @@
"SearchTests\/testOpenTabsInSearchSuggestions()",
"SearchTests\/testSearchEngine()",
"SearchTests\/testSearchStartAfterTypingTwoWords()",
"SettingsTests\/testImageOnOff()",
"SettingsTests\/testImageOnOff_tabTrayExperimentOff()",
"SettingsTests\/testImageOnOff_tabTrayExperimentOn()",
"SettingsTests\/testSettingsOptionSubtitles()",
Expand Down
3 changes: 3 additions & 0 deletions firefox-ios/firefox-ios-tests/Tests/Smoketest.xctestplan
Original file line number Diff line number Diff line change
Expand Up @@ -133,9 +133,12 @@
"BookmarksTests\/testAddNewFolder()",
"BookmarksTests\/testAddNewMarker()",
"BookmarksTests\/testBookmark()",
"BookmarksTests\/testBookmarkLibraryAddDeleteBookmark_TAE()",
"BookmarksTests\/testBookmarkingUI()",
"BookmarksTests\/testBookmarkingUI_tabTrayExperimentOff()",
"BookmarksTests\/testBookmarkingUI_tabTrayExperimentOn()",
"BookmarksTests\/testBookmarksAwesomeBar_TAE()",
"BookmarksTests\/testBookmarksToggleIsAvailable_TAE()",
"BookmarksTests\/testDeleteBookmarkContextMenu()",
"BookmarksTests\/testDeleteBookmarkSwiping()",
"BookmarksTests\/testDesktopFoldersArePresent()",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,20 +74,23 @@
"AuthenticationTest",
"AuthenticationTest\/testBasicHTTPAuthenticationPromptVisibleAndLogin()",
"BaseTestCase",
"BookmarksTests",
"BookmarksTests\/testAddNewFolder()",
"BookmarksTests\/testBookmark()",
"BookmarksTests\/testBookmarkLibraryAddDeleteBookmark()",
"BookmarksTests\/testBookmarkLibraryAddDeleteBookmark_tabTrayExperimentOff()",
"BookmarksTests\/testBookmarkLibraryAddDeleteBookmark_tabTrayExperimentOn()",
"BookmarksTests\/testBookmarkingUI()",
"BookmarksTests\/testBookmarkingUI_tabTrayExperimentOff()",
"BookmarksTests\/testBookmarkingUI_tabTrayExperimentOn()",
"BookmarksTests\/testBookmarksAwesomeBar()",
"BookmarksTests\/testBookmarksToggleIsAvailable()",
"BookmarksTests\/testDeleteBookmarkContextMenu()",
"BookmarksTests\/testEditBookmark()",
"BookmarksTests\/testLongTapRecentlySavedLink()",
"BookmarksTests\/testLongTapRecentlySavedLink_tabTrayExperimentOff()",
"BookmarksTests\/testLongTapRecentlySavedLink_tabTrayExperimentOn()",
"BookmarksTests\/testRecentlyBookmarked()",
"BookmarksTests\/testValidateBookmarksOptions()",
"BrowsingPDFTests\/testBookmarkPDF()",
"BrowsingPDFTests\/testLongPressOnPDFLink()",
"BrowsingPDFTests\/testLongPressOnPDFLinkToAddToReadingList()",
Expand Down
133 changes: 132 additions & 1 deletion firefox-ios/firefox-ios-tests/Tests/XCUITests/BookmarksTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,23 @@ let urlLabelExample_3 = "Example Domain"
let url_3 = "localhost:\(serverPort)/test-fixture/test-example.html"

class BookmarksTests: FeatureFlaggedTestBase {
private var browserScreen: BrowserScreen!
private var topSitesScreen: TopSitesScreen!
private var toolbarScreen: ToolbarScreen!
private var libraryScreen: LibraryScreen!
private var homepageSettingsScreen: HomepageSettingsScreen!
private var firefoxHomeScreen: FirefoxHomePageScreen!

override func setUp() {
super.setUp()
topSitesScreen = TopSitesScreen(app: app)
browserScreen = BrowserScreen(app: app)
toolbarScreen = ToolbarScreen(app: app)
libraryScreen = LibraryScreen(app: app)
homepageSettingsScreen = HomepageSettingsScreen(app: app)
firefoxHomeScreen = FirefoxHomePageScreen(app: app)
}

override func tearDown() {
XCUIDevice.shared.orientation = .portrait
super.tearDown()
Expand Down Expand Up @@ -169,6 +186,46 @@ class BookmarksTests: FeatureFlaggedTestBase {
XCTAssertNotEqual(app.tables["SiteTable"].cells.count, 0)
}

// https://mozilla.testrail.io/index.php?/cases/view/2306907
// SmokeTest TAE
func testBookmarksAwesomeBar_TAE() {
app.launch()
navigator.nowAt(HomePanelsScreen)
navigator.goto(URLBarOpen)
XCTExpectFailure("The app was not launched", strict: false) {
topSitesScreen.assertVisible()
}
browserScreen.tapOnAddressBar()
browserScreen.typeOnSearchBar(text: "www.google")
browserScreen.assertTypeSuggestText(text: "www.google")
browserScreen.typeOnSearchBar(text: ".com")
browserScreen.typeOnSearchBar(text: "\r")
waitUntilPageLoad()

// Enter new url
navigator.nowAt(BrowserTab)
navigator.performAction(Action.OpenNewTabFromTabTray)
navigator.nowAt(HomePanelsScreen)
navigator.goto(URLBarOpen)
browserScreen.tapOnAddressBar()
browserScreen.typeOnSearchBar(text: "https://mozilla.org")

// Site table exists but is empty
browserScreen.assertNumberOfSuggestedLines(expectedLines: 0)
browserScreen.typeOnSearchBar(text: "\r")
waitUntilPageLoad()

// Add page to bookmarks
bookmark_TAE()

// Now the site should be suggested
navigator.performAction(Action.AcceptClearPrivateData)
navigator.goto(BrowserTab)
browserScreen.tapOnAddressBar()
browserScreen.typeOnSearchBar(text: "mozilla.org")
browserScreen.assertTypeSuggestText(text: "mozilla.org")
}

// https://mozilla.testrail.io/index.php?/cases/view/2306914
func testAddNewFolder() {
app.launch()
Expand Down Expand Up @@ -238,7 +295,7 @@ class BookmarksTests: FeatureFlaggedTestBase {
}

private func typeOnSearchBar(text: String) {
app.textFields[AccessibilityIdentifiers.Browser.AddressToolbar.searchTextField].waitAndTap()
urlBarAddress.waitAndTap()
urlBarAddress.typeText(text)
}

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

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

// https://mozilla.testrail.io/index.php?/cases/view/2306909
// SmokeTest TAE
func testBookmarkLibraryAddDeleteBookmark_TAE() {
app.launch()
navigator.nowAt(NewTabScreen)
toolbarScreen.assertTabsButtonExists()
navigator.goto(LibraryPanel_Bookmarks)
libraryScreen.assertBookmarkList()
libraryScreen.assertBookmarkListCount(numberOfEntries: 0)

// Add a bookmark
navigator.nowAt(LibraryPanel_Bookmarks)
navigator.goto(HomePanelsScreen)
navigator.goto(URLBarOpen)
navigator.openURL(url_3)
waitUntilPageLoad()
navigator.nowAt(BrowserTab)
bookmark_TAE()

// Check that it appears in Bookmarks panel
navigator.goto(LibraryPanel_Bookmarks)
libraryScreen.assertBookmarkList()
libraryScreen.assertBookmarkListCount(numberOfEntries: 1)

// Delete the Bookmark added, check it is removed
libraryScreen.swipeAndDeleteBookmark(entryName: urlLabelExample_3)

// Check that the bookmark was deleted by ensuring an element of the empty state is visible
libraryScreen.assertBookmarkList()
libraryScreen.assertEmptyStateSignInButtonExists()
libraryScreen.assertBookmarkListLabel(label: "Empty list")
}

// https://mozilla.testrail.io/index.php?/cases/view/2306911
func testRecentlyBookmarked() {
app.launch()
Expand Down Expand Up @@ -391,6 +482,39 @@ class BookmarksTests: FeatureFlaggedTestBase {
mozWaitForElementToExist(app.cells["BookmarksCell"])
}

// https://mozilla.testrail.io/index.php?/cases/view/2784448
// SmokeTest TAE
func testBookmarksToggleIsAvailable_TAE() throws {
addLaunchArgument(jsonFileName: "homepageRedesignOff", featureName: "homepage-redesign-feature")
app.launch()
navigator.openURL(url_3)
toolbarScreen.assertTabsButtonExists()
navigator.nowAt(BrowserTab)
bookmark_TAE()
navigator.nowAt(NewTabScreen)
navigator.goto(HomeSettings)
homepageSettingsScreen.assertBookmarkToggleExists()
homepageSettingsScreen.disableBookmarkToggle()
homepageSettingsScreen.assertBookmarkToggleIsDisabled()
navigator.nowAt(HomeSettings)
navigator.goto(NewTabScreen)
navigator.goto(TabTray)
navigator.performAction(Action.OpenNewTabFromTabTray)
browserScreen.tapCancelButtonIfExist()
firefoxHomeScreen.assertBookmarksItemCellToNotExist()
navigator.nowAt(BrowserTab)
navigator.goto(HomeSettings)
homepageSettingsScreen.assertBookmarkToggleExists()
homepageSettingsScreen.enableBookmarkToggle()
homepageSettingsScreen.assertBookmarkToggleIsEnabled()
navigator.nowAt(HomeSettings)
navigator.goto(NewTabScreen)
navigator.goto(TabTray)
navigator.performAction(Action.OpenNewTabFromTabTray)
browserScreen.tapCancelButtonIfExist()
firefoxHomeScreen.assertBookmarksItemCellExist()
}

private func validateLongTapOptionsFromBookmarkLink(isExperiment: Bool) {
// Go to "Recently saved" section and long tap on one of the links
navigator.openURL(path(forTestPage: url_2["url"]!))
Expand Down Expand Up @@ -479,4 +603,11 @@ class BookmarksTests: FeatureFlaggedTestBase {
let url = app.textFields[AccessibilityIdentifiers.Browser.AddressToolbar.searchTextField]
mozWaitForValueContains(url, value: "localhost")
}

func bookmark_TAE() {
browserScreen.assertAddressBar_LockIconExist()
navigator.nowAt(BrowserTab)
navigator.goto(BrowserTabMenu)
navigator.performAction(Action.Bookmark)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,10 @@ final class BrowserScreen {
urlElement.waitAndTap()
}

func typeOnSearchBar(text: String) {
addressBar.typeText(text)
}

func assertCancelButtonOnUrlBarExist() {
BaseTestCase().mozWaitForElementToExist(cancelButton)
}
Expand Down Expand Up @@ -219,4 +223,14 @@ final class BrowserScreen {
BaseTestCase().mozWaitForElementToExist(firstLink)
firstLink.press(forDuration: 1)
}

func assertTypeSuggestText(text: String) {
let suggestedText = app.tables.firstMatch.cells.staticTexts[text]
BaseTestCase().mozWaitForElementToExist(suggestedText)
}

func assertNumberOfSuggestedLines(expectedLines: Int) {
let suggestedLines = app.tables.firstMatch.cells
XCTAssertEqual(suggestedLines.count, expectedLines)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,14 @@ final class FirefoxHomePageScreen {

BaseTestCase().mozWaitForElementToExist(topSites_ItemCell, timeout: timeout)
}

func assertBookmarksItemCellToNotExist(timeout: TimeInterval = TIMEOUT) {
let bookmarks_ItemCell = sel.BOOKMARKS_ITEMCELL.element(in: app)
BaseTestCase().mozWaitForElementToNotExist(bookmarks_ItemCell, timeout: timeout)
}

func assertBookmarksItemCellExist(timeout: TimeInterval = TIMEOUT) {
let bookmarks_ItemCell = sel.BOOKMARKS_ITEMCELL.element(in: app)
BaseTestCase().mozWaitForElementToExist(bookmarks_ItemCell, timeout: timeout)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/

import XCTest

final class HomepageSettingsScreen {
private let app: XCUIApplication
private let sel: HomepageSettingsSelectorSet

init(app: XCUIApplication, selectors: HomepageSettingsSelectorSet = HomepageSettingsSelectors()) {
self.app = app
self.sel = selectors
}

private var bookmarkToggle: XCUIElement { sel.BOOKMARK_TOGGLE.element(in: app) }

// helper to centralize the duplicated lookup
private var bookmarkSwitch: XCUIElement {
let settingTable = sel.HOMEPAGE_SETTINGS_TABLE.element(in: app)
let toggle = sel.BOOKMARK_TOGGLE.value
return settingTable.cells.switches[toggle]
}

func assertBookmarkToggleExists(timeout: TimeInterval = TIMEOUT) {
BaseTestCase().mozWaitForElementToExist(bookmarkSwitch)
}

func disableBookmarkToggle() {
let switchElement = bookmarkSwitch
if switchElement.value as? String == "1" {
switchElement.waitAndTap()
}
}

func enableBookmarkToggle() {
let switchElement = bookmarkSwitch
if switchElement.value as? String == "0" {
switchElement.waitAndTap()
}
}

func assertBookmarkToggleIsEnabled() {
let switchElement = bookmarkSwitch
XCTAssertEqual(switchElement.value as? String, "1", "Bookmark toggle is not enabled")
}

func assertBookmarkToggleIsDisabled() {
let switchElement = bookmarkSwitch
XCTAssertEqual(switchElement.value as? String, "0", "Bookmark toggle is not disabled")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,38 @@ final class LibraryScreen {
bookmarksTable.staticTexts[name]
], timeout: timeout)
}

func assertBookmarkList() {
let bookmarksTable = sel.BOOKMARKS_LIST.element(in: app)
BaseTestCase().mozWaitForElementToExist(bookmarksTable)
}

func assertBookmarkListCount(numberOfEntries: Int) {
let bookmarksTable = sel.BOOKMARKS_LIST.element(in: app)
XCTAssertEqual(bookmarksTable.cells.count, numberOfEntries)
}

func swipeBookmarkEntry(entryName: String) {
let bookmarksTable = sel.BOOKMARKS_LIST.element(in: app)
bookmarksTable.cells.staticTexts[entryName].swipeLeft()
}

func tapDeleteBookmarkButton() {
let deleteButton = sel.DELETE_BUTTON.element(in: app)
deleteButton.waitAndTap()
}

func swipeAndDeleteBookmark(entryName: String) {
swipeBookmarkEntry(entryName: entryName)
tapDeleteBookmarkButton()
}

func assertEmptyStateSignInButtonExists() {
BaseTestCase().mozWaitForElementToExist(sel.SIGN_IN_BUTTON.element(in: app))
}

func assertBookmarkListLabel(label: String) {
let bookmarksTable = sel.BOOKMARKS_LIST.element(in: app)
XCTAssertEqual(bookmarksTable.label, "Empty list")
}
}
Loading