Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Preliminary Automated test changes for toolbar redesign #23086

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
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 @@ -19,7 +19,7 @@ public struct AccessibilityIdentifiers {
static let urlBarBorder = "TabToolbar.urlBarBorder"
static let settingsMenuButton = "TabToolbar.menuButton"
static let homeButton = "TabToolbar.homeButton"
static let trackingProtection = "TabLocationView.trackingProtectionButton"
static let trackingProtection = "AddressToolbar.lockIcon"
static let readerModeButton = "TabLocationView.readerModeButton"
static let reloadButton = "TabLocationView.reloadButton"
static let shareButton = "TabLocationView.shareButton"
Expand All @@ -44,7 +44,7 @@ public struct AccessibilityIdentifiers {
static let scanQRCodeButton = "urlBar-scanQRCode"
static let cancelButton = "urlBar-cancel"
static let searchTextField = "address"
static let url = "url"
static let url = "AddressToolbar.address"
}

struct KeyboardAccessory {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import XCTest
let page1 = "http://localhost:\(serverPort)/test-fixture/find-in-page-test.html"
let page2 = "http://localhost:\(serverPort)/test-fixture/test-example.html"
let serverPort = ProcessInfo.processInfo.environment["WEBSERVER_PORT"] ?? "\(Int.random(in: 1025..<65000))"
let urlBarAddress = XCUIApplication().textFields[AccessibilityIdentifiers.Browser.UrlBar.searchTextField]
let urlBarAddress = XCUIApplication().textFields[AccessibilityIdentifiers.Browser.UrlBar.url]

func path(forTestPage page: String) -> String {
return "http://localhost:\(serverPort)/test-fixture/\(page)"
Expand Down Expand Up @@ -270,8 +270,10 @@ class BaseTestCase: XCTestCase {

func checkBookmarksUpdated() {
waitForTabsButton()
let numberOfRecentlyVisitedBookmarks = app.scrollViews
let bookmarksCell = app.scrollViews
.cells[AccessibilityIdentifiers.FirefoxHomepage.Bookmarks.itemCell]
scrollToElement(bookmarksCell)
let numberOfRecentlyVisitedBookmarks = bookmarksCell
.otherElements
.otherElements
.otherElements
Expand Down Expand Up @@ -408,6 +410,7 @@ class BaseTestCase: XCTestCase {
let result = XCTWaiter().wait(for: [expectation], timeout: timeout)
XCTAssertEqual(result, .completed, "Element did not become hittable in time.")
}

func switchThemeToDarkOrLight(theme: String) {
mozWaitForElementToExist(app.buttons[AccessibilityIdentifiers.Toolbar.settingsMenuButton])
navigator.nowAt(BrowserTab)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import Common

let PDF_website = [
"url": "https://storage.googleapis.com/mobile_test_assets/public/pdf-test.pdf",
"pdfValue": "storage.googleapis.com/mobile_test_assets/public/pdf-test.pdf",
"urlValue": "www.education.gov.yk.ca/",
"urlValue": "education.gov.yk.ca",
"pdfValue": "storage.googleapis.com",
"bookmarkLabel": "https://storage.googleapis.com/mobile_test_assets/public/pdf-test.pdf",
"longUrlValue": "http://www.education.gov.yk.ca/"
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,14 @@ class ClipBoardTests: BaseTestCase {
// Check for test url in the browser
func checkUrl() {
let urlTextField = app.textFields[AccessibilityIdentifiers.Browser.UrlBar.url]
mozWaitForValueContains(urlTextField, value: "www.example")
mozWaitForValueContains(urlTextField, value: "example.com")
}

// Copy url from the browser
func copyUrl() {
navigator.goto(URLBarOpen)
urlBarAddress.waitAndTap()
if iPad() {
urlBarAddress.press(forDuration: 1)
app.menuItems["Select All"].tap()
}
app.menuItems["Copy"].waitAndTap()
Expand Down Expand Up @@ -64,8 +63,8 @@ class ClipBoardTests: BaseTestCase {
navigator.nowAt(NewTabScreen)
navigator.goto(URLBarOpen)
urlBarAddress.press(forDuration: 3)
app.menuItems["Paste"].tap()
mozWaitForValueContains(urlBarAddress, value: "www.example.com")
app.otherElements["Paste"].tap()
mozWaitForValueContains(urlBarAddress, value: "http://www.example.com/")
}

// https://mozilla.testrail.io/index.php?/cases/view/2307051
Expand All @@ -84,7 +83,7 @@ class ClipBoardTests: BaseTestCase {
app.otherElements[AccessibilityIdentifiers.Photon.pasteAndGoAction].tap()
// The URL is pasted and the page is correctly loaded
mozWaitForElementToExist(urlBar)
waitForValueContains(urlBar, value: "test-example.html")
waitForValueContains(urlBar, value: "localhost")
mozWaitForElementToExist(app.staticTexts["Example Domain"])
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ class DomainAutocompleteTests: BaseTestCase {

// Check that the address field is empty and that the home panels are shown
let value = urlBarAddress.value
XCTAssertEqual(value as? String, "", "The url has not been removed correctly")
XCTAssertEqual(value as? String, "Search or enter address", "The url has not been removed correctly")

mozWaitForElementToExist(app.cells[AccessibilityIdentifiers.FirefoxHomepage.TopSites.itemCell])
}
Expand All @@ -122,7 +122,7 @@ class DomainAutocompleteTests: BaseTestCase {
navigator.goto(URLBarOpen)
urlBarAddress.typeText("ex")
if #available(iOS 16, *) {
mozWaitForValueContains(app.otherElements.textFields["Address Bar"], value: "www.example.com/")
mozWaitForValueContains(urlBarAddress, value: "example.com")
let value = urlBarAddress.value
XCTAssertEqual(value as? String, "example.com", "Wrong autocompletion")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -911,7 +911,7 @@ func createScreenGraph(for test: XCTestCase, with app: XCUIApplication) -> MMScr
transitionTo: HomePanelsScreen
)
screenState.tap(
app.otherElements[StandardImageIdentifiers.Large.tab],
app.otherElements[StandardImageIdentifiers.Large.privateMode],
forAction: Action.OpenPrivateTabLongPressTabsButton,
transitionTo: NewTabScreen
) { userState in
Expand Down Expand Up @@ -960,7 +960,7 @@ func createScreenGraph(for test: XCTestCase, with app: XCUIApplication) -> MMScr
)

screenState.tap(
app.buttons[AccessibilityIdentifiers.Toolbar.homeButton],
app.buttons[AccessibilityIdentifiers.Toolbar.addNewTabButton],
forAction: Action.GoToHomePage
) { userState in
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,7 @@ class HistoryTests: BaseTestCase {
urlBarForwardButton.press(forDuration: 1)
app.tables.staticTexts["The Book of Mozilla"].waitAndTap()
let url = app.textFields[AccessibilityIdentifiers.Browser.UrlBar.url]
mozWaitForValueContains(url, value: "test-fixture/test-mozilla-book.html")
mozWaitForValueContains(url, value: "localhost")
}

// Private function created to select desired option from the "Clear Recent History" list
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,35 +12,30 @@ class HomeButtonTests: BaseTestCase {

// https://mozilla.testrail.io/index.php?/cases/view/2306925
func testGoHome() throws {
if iPad() {
waitForTabsButton()
navigator.nowAt(NewTabScreen)
}
navigator.openURL(path(forTestPage: "test-mozilla-org.html"), waitForLoading: true)
app.buttons[AccessibilityIdentifiers.Toolbar.homeButton].waitAndTap()
app.buttons[AccessibilityIdentifiers.Toolbar.addNewTabButton].waitAndTap()
navigator.nowAt(NewTabScreen)
waitForTabsButton()
XCTAssertEqual(app.buttons[AccessibilityIdentifiers.Toolbar.searchButton].label, "Search")
if iPad() {
navigator.nowAt(NewTabScreen)
if !iPad() {
XCTAssertEqual(app.buttons[AccessibilityIdentifiers.Toolbar.searchButton].label, "Search")
}
navigator.openURL(path(forTestPage: "test-mozilla-book.html"), waitForLoading: true)
mozWaitForElementToExist(app.buttons[AccessibilityIdentifiers.Toolbar.homeButton])
mozWaitForElementToExist(app.buttons[AccessibilityIdentifiers.Toolbar.addNewTabButton])

XCUIDevice.shared.orientation = .landscapeRight
XCTAssertTrue(app.buttons["Home"].exists)
app.buttons["Home"].tap()
mozWaitForElementToExist(app.buttons[AccessibilityIdentifiers.Toolbar.addNewTabButton])
app.buttons[AccessibilityIdentifiers.Toolbar.addNewTabButton].tap()
navigator.nowAt(NewTabScreen)
}

// https://mozilla.testrail.io/index.php?/cases/view/2306883
func testSwitchHomepageKeyboardNotRaisedUp() {
func testSwitchHomepageKeyboardRaisedUp() {
// Open a new tab and load a web page
navigator.openURL("http://localhost:\(serverPort)/test-fixture/find-in-page-test.html")
waitUntilPageLoad()

// Switch to Homepage by taping the home button
app.buttons[AccessibilityIdentifiers.Toolbar.homeButton].waitAndTap()
app.buttons[AccessibilityIdentifiers.Toolbar.addNewTabButton].waitAndTap()

validateHomePageAndKeyboardNotRaisedUp()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ class HomePageSettingsUITests: BaseTestCase {
waitUntilPageLoad()

// Now check open home page should load the previously saved home page
let homePageMenuItem = app.buttons[AccessibilityIdentifiers.Toolbar.homeButton]
let homePageMenuItem = app.buttons[AccessibilityIdentifiers.Toolbar.addNewTabButton]
homePageMenuItem.waitAndTap()
waitUntilPageLoad()
mozWaitForValueContains(app.textFields[AccessibilityIdentifiers.Browser.UrlBar.url], value: "example")
Expand Down Expand Up @@ -138,11 +138,16 @@ class HomePageSettingsUITests: BaseTestCase {
mozWaitForElementToExist(app.textFields[AccessibilityIdentifiers.Browser.UrlBar.url])

// Now after setting History, make sure FF home is set
app.buttons[AccessibilityIdentifiers.Browser.UrlBar.cancelButton].tap()
navigator.goto(SettingsScreen)
navigator.goto(NewTabSettings)
navigator.performAction(Action.SelectHomeAsFirefoxHomePage)
navigator.performAction(Action.GoToHomePage)
mozWaitForElementToExist(app.cells[AccessibilityIdentifiers.FirefoxHomepage.TopSites.itemCell])
if iPad() {
let homepage = AccessibilityIdentifiers.Settings.Homepage.self
mozWaitForElementToExist(app.cells[homepage.CustomizeFirefox.Shortcuts.settingsPage])
} else {
mozWaitForElementToExist(app.cells[AccessibilityIdentifiers.FirefoxHomepage.TopSites.itemCell])
}
}

// https://mozilla.testrail.io/index.php?/cases/view/2307031
Expand Down Expand Up @@ -258,8 +263,16 @@ class HomePageSettingsUITests: BaseTestCase {
// Preconditons: Create 6 bookmarks & add 1 items to reading list
bookmarkPages()
addContentToReaderView()
navigator.performAction(Action.GoToHomePage)
if iPad() {
mozWaitForElementToExist(app.buttons[AccessibilityIdentifiers.Toolbar.tabsButton])
app.buttons[AccessibilityIdentifiers.Toolbar.tabsButton].tap()
mozWaitForElementToExist(app.buttons[AccessibilityIdentifiers.TabTray.newTabButton])
app.buttons[AccessibilityIdentifiers.TabTray.newTabButton].tap()
} else {
navigator.performAction(Action.GoToHomePage)
}
mozWaitForElementToExist(app.staticTexts["Bookmarks"])
app.buttons[AccessibilityIdentifiers.Browser.UrlBar.cancelButton].tap()
navigator.performAction(Action.ToggleRecentlySaved)
// On iPad we have the homepage button always present,
// on iPhone we have the search button instead when we're on a new tab page
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ class JumpBackInTests: BaseTestCase {

// The view is switched to the twitter tab
let url = app.textFields[AccessibilityIdentifiers.Browser.UrlBar.url].value as! String
XCTAssertEqual(url, "www.wikipedia.org/")
XCTAssertEqual(url, "wikipedia.org")

// Open a new tab in normal browsing
navigator.goto(TabTray)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,26 +38,19 @@ class MultiWindowTests: IpadOnlyTestCase {
if skipPlatform { return }
splitViewFromHomeScreen()
// Access hamburger menu and tap on "new tab"
let menuButton = AccessibilityIdentifiers.Toolbar.settingsMenuButton
let newTab = StandardImageIdentifiers.Large.plus
let tabsButtonIdentifier = AccessibilityIdentifiers.Toolbar.tabsButton
let topSites = AccessibilityIdentifiers.FirefoxHomepage.TopSites.itemCell
let homeButtom = AccessibilityIdentifiers.Toolbar.homeButton
let homeButtom = AccessibilityIdentifiers.Toolbar.addNewTabButton
// A new tab is opened in the same window
app.collectionViews.cells.matching(identifier: topSites).firstMatch.waitAndTap()
mozWaitForElementToExist(app.buttons[homeButtom])
app.buttons.matching(identifier: menuButton).element(boundBy: 0).tap()
mozWaitForElementToExist(app.tables.otherElements[newTab])
app.tables.otherElements[newTab].tap()
app.buttons[AccessibilityIdentifiers.Browser.UrlBar.cancelButton].tap()
app.buttons[homeButtom].firstMatch.tap()
app.buttons[AccessibilityIdentifiers.Browser.UrlBar.cancelButton].firstMatch.tap()
let tabButtonSecondWindow = app.buttons.matching(identifier: tabsButtonIdentifier).element(boundBy: 0)
XCTAssertEqual(tabButtonSecondWindow.value as? String, "2", "Number of tabs opened should be equal to 2")
// A new tab is opened in the same window
app.collectionViews.cells.matching(identifier: topSites).element(boundBy: 6).waitAndTap()
mozWaitForElementToExist(app.buttons[homeButtom])
app.buttons.matching(identifier: menuButton).element(boundBy: 1).tap()
app.tables.otherElements[newTab].tap()
app.buttons[AccessibilityIdentifiers.Browser.UrlBar.cancelButton].tap()
app.buttons[homeButtom].firstMatch.tap()
app.buttons[AccessibilityIdentifiers.Browser.UrlBar.cancelButton].firstMatch.tap()
let tabButtonFirstWindow = app.buttons.matching(identifier: tabsButtonIdentifier).element(boundBy: 1)
XCTAssertEqual(tabButtonFirstWindow.value as? String, "2", "Number of tabs opened should be equal to 2")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,21 +41,21 @@ class NavigationTest: BaseTestCase {
navigator.openURL(path(forTestPage: "test-example.html"))
waitUntilPageLoad()
let url = app.textFields[AccessibilityIdentifiers.Browser.UrlBar.url]
mozWaitForValueContains(url, value: "test-example.html")
mozWaitForValueContains(url, value: "localhost")
XCTAssertTrue(app.buttons[AccessibilityIdentifiers.Toolbar.backButton].isEnabled)
XCTAssertFalse(app.buttons[AccessibilityIdentifiers.Toolbar.forwardButton].isEnabled)

// Once a second url is open, back button is enabled but not the forward one till we go back to url_1
navigator.openURL(path(forTestPage: "test-mozilla-org.html"))
waitUntilPageLoad()
mozWaitForValueContains(url, value: "test-mozilla-org.html")
mozWaitForValueContains(url, value: "localhost")
XCTAssertTrue(app.buttons[AccessibilityIdentifiers.Toolbar.backButton].isEnabled)
XCTAssertFalse(app.buttons[AccessibilityIdentifiers.Toolbar.forwardButton].isEnabled)
// Go back to previous visited web site
app.buttons[AccessibilityIdentifiers.Toolbar.backButton].tap()

waitUntilPageLoad()
mozWaitForValueContains(url, value: "test-example.html")
mozWaitForValueContains(url, value: "localhost")

if iPad() {
app.buttons[AccessibilityIdentifiers.Toolbar.forwardButton].tap()
Expand All @@ -64,7 +64,7 @@ class NavigationTest: BaseTestCase {
app.buttons[AccessibilityIdentifiers.Toolbar.forwardButton].waitAndTap()
}
waitUntilPageLoad()
mozWaitForValueContains(url, value: "test-mozilla-org")
mozWaitForValueContains(url, value: "localhost")
}

// https://mozilla.testrail.io/index.php?/cases/view/2441489
Expand Down Expand Up @@ -351,7 +351,7 @@ class NavigationTest: BaseTestCase {

// Check that there are no pop ups
navigator.openURL(popUpTestUrl)
mozWaitForValueContains(app.textFields[AccessibilityIdentifiers.Browser.UrlBar.url], value: "blocker.html")
mozWaitForValueContains(app.textFields[AccessibilityIdentifiers.Browser.UrlBar.url], value: "localhost")
mozWaitForElementToExist(app.webViews.staticTexts["Blocked Element"])

let numTabs = app.buttons["Show Tabs"].value
Expand Down Expand Up @@ -445,7 +445,7 @@ class NavigationTest: BaseTestCase {
XCTAssert(app.keyboards.count > 0, "The keyboard is not shown")
app.typeText("example.com\n")

mozWaitForValueContains(urlBar, value: "example.com/")
mozWaitForValueContains(urlBar, value: "example.com")
XCTAssertFalse(app.keyboards.count > 0, "The keyboard is shown")
// swiftlint:enable empty_count
}
Expand Down Expand Up @@ -516,7 +516,7 @@ class NavigationTest: BaseTestCase {
waitUntilPageLoad()
if #available(iOS 16, *) {
let url = app.textFields[AccessibilityIdentifiers.Browser.UrlBar.url]
mozWaitForValueContains(url, value: "test-example.html")
mozWaitForValueContains(url, value: "localhost")
XCTAssertTrue(backButton.isHittable, "Back button is not hittable")
XCTAssertTrue(backButton.isEnabled, "Back button is disabled")
backButton.tap()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,24 +191,26 @@ class OnboardingTests: BaseTestCase {
navigator.goto(BrowserTabMenu)
navigator.performAction(Action.OpenWhatsNewPage)
waitUntilPageLoad()
app.textFields[AccessibilityIdentifiers.Browser.UrlBar.url].tap()

// Extract version number from url
let url = app.textFields[AccessibilityIdentifiers.Browser.UrlBar.url].value
let textUrl = String(describing: url)
let start = textUrl.index(textUrl.startIndex, offsetBy: 43)
let end = textUrl.index(textUrl.startIndex, offsetBy: 48)
let start = textUrl.index(textUrl.startIndex, offsetBy: 51)
let end = textUrl.index(textUrl.startIndex, offsetBy: 56)
let range = start..<end
let mySubstring = textUrl[range]
let releaseVersion = String(mySubstring)

mozWaitForElementToExist(app.staticTexts[releaseVersion])
mozWaitForValueContains(
app.textFields[AccessibilityIdentifiers.Browser.UrlBar.url],
value: "www.mozilla.org/en-US/firefox/ios/" + releaseVersion + "/releasenotes/"
value: "https://www.mozilla.org/en-US/firefox/ios/" + releaseVersion + "/releasenotes/"
)
mozWaitForElementToExist(app.staticTexts["Release Notes"])
app.buttons[AccessibilityIdentifiers.Browser.UrlBar.cancelButton].tap()
waitForElementsToExist(
[
app.staticTexts["Release Notes"],
app.staticTexts["Firefox for iOS Release"],
app.staticTexts["\(releaseVersion)"],
app.staticTexts["Get the most recent version"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ class OpeningScreenTests: BaseTestCase {
closeFromAppSwitcherAndRelaunch()
// After re-launching the app, the last visited page is displayed
let url = app.textFields[AccessibilityIdentifiers.Browser.UrlBar.url]
mozWaitForValueContains(url, value: "test-mozilla-org")
mozWaitForValueContains(url, value: "localhost")
// Background and restore Firefox
restartInBackground()
// After re-launching the app, the last visited page is displayed
mozWaitForValueContains(url, value: "test-mozilla-org")
mozWaitForValueContains(url, value: "localhost")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,6 @@ class PhotonActionSheetTests: BaseTestCase {
// User is back to the BrowserTab where the sharesheet was launched
let url = app.textFields[AccessibilityIdentifiers.Browser.UrlBar.url]
mozWaitForElementToExist(url)
mozWaitForValueContains(url, value: "example.com/")
mozWaitForValueContains(url, value: "example.com")
}
}
Loading