mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-19 23:07:33 +09:00
Dactyloidae iOS initial commit
This commit is contained in:
parent
daa6179d22
commit
7154a0497e
2123 changed files with 197052 additions and 0 deletions
156
mobile/ios/UITests/ReadingListTest.swift
Normal file
156
mobile/ios/UITests/ReadingListTest.swift
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
/* 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 Foundation
|
||||
import EarlGrey
|
||||
import WebKit
|
||||
|
||||
class ReadingListTests: KIFTestCase, UITextFieldDelegate {
|
||||
fileprivate var webRoot: String!
|
||||
|
||||
override func setUp() {
|
||||
super.setUp()
|
||||
// We undo the localhost/127.0.0.1 switch in order to get 'localhost' in accessibility labels.
|
||||
webRoot = SimplePageServer.start()
|
||||
.replacingOccurrences(of: "127.0.0.1", with: "localhost", options: NSString.CompareOptions(), range: nil)
|
||||
BrowserUtils.dismissFirstRunUI()
|
||||
}
|
||||
|
||||
func enterUrl(url: String) {
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityID("url")).perform(grey_tap())
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityID("address")).perform(grey_replaceText(url))
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityID("address")).perform(grey_typeText("\n"))
|
||||
}
|
||||
|
||||
func waitForReadingList() {
|
||||
let readingList = GREYCondition(name: "wait until Reading List Add btn appears", block: { _ in
|
||||
var errorOrNil: NSError?
|
||||
let matcher = grey_allOf([grey_accessibilityLabel("Add to Reading List"),
|
||||
grey_sufficientlyVisible()])
|
||||
EarlGrey.select(elementWithMatcher: matcher)
|
||||
.assert(grey_notNil(), error: &errorOrNil)
|
||||
let success = errorOrNil == nil
|
||||
return success
|
||||
}).wait(withTimeout: 20)
|
||||
|
||||
GREYAssertTrue(readingList, reason: "Can't be added to Reading List")
|
||||
}
|
||||
|
||||
func waitForEmptyReadingList() {
|
||||
let readable = GREYCondition(name: "Check readable list is empty", block: { _ in
|
||||
var error: NSError?
|
||||
let matcher = grey_allOf([grey_accessibilityLabel("Save pages to your Reading List by tapping the book plus icon in the Reader View controls."),
|
||||
grey_sufficientlyVisible()])
|
||||
EarlGrey.select(elementWithMatcher: matcher)
|
||||
.assert(grey_notNil(), error: &error)
|
||||
|
||||
return error == nil
|
||||
}).wait(withTimeout: 10)
|
||||
GREYAssertTrue(readable, reason: "Read list should not appear")
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests opening reader mode pages from the urlbar and reading list.
|
||||
*/
|
||||
func testReadingList() {
|
||||
// Load a page
|
||||
let url1 = "\(webRoot!)/readablePage.html"
|
||||
enterUrl(url: url1)
|
||||
tester().waitForWebViewElementWithAccessibilityLabel("Readable Page")
|
||||
|
||||
// Add it to the reading list
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityLabel("Reader View"))
|
||||
.perform(grey_tap())
|
||||
waitForReadingList()
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityLabel("Add to Reading List"))
|
||||
.perform(grey_tap())
|
||||
|
||||
// Open a new page
|
||||
let url2 = "\(webRoot!)/numberedPage.html?page=1"
|
||||
enterUrl(url: url2)
|
||||
tester().waitForWebViewElementWithAccessibilityLabel("Page 1")
|
||||
|
||||
// Check that it appears in the reading list home panel
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityID("url"))
|
||||
.perform(grey_tap())
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityLabel("Reading list"))
|
||||
.perform(grey_tap())
|
||||
|
||||
// Tap to open it
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityLabel("localhost"))
|
||||
.perform(grey_tap())
|
||||
tester().waitForWebViewElementWithAccessibilityLabel("Readable page")
|
||||
|
||||
// Remove it from the reading list
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityLabel("Remove from Reading List"))
|
||||
.perform(grey_tap())
|
||||
|
||||
// Check that it no longer appears in the reading list home panel
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityID("url"))
|
||||
.perform(grey_tap())
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityLabel("Reading list"))
|
||||
.perform(grey_tap())
|
||||
|
||||
waitForEmptyReadingList()
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityID("goBack")).perform(grey_tap())
|
||||
}
|
||||
|
||||
func testReadingListAutoMarkAsRead() {
|
||||
// Load a page
|
||||
let url1 = "\(webRoot!)/readablePage.html"
|
||||
|
||||
enterUrl(url: url1)
|
||||
tester().waitForWebViewElementWithAccessibilityLabel("Readable Page")
|
||||
|
||||
// Add it to the reading list
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityLabel("Reader View"))
|
||||
.perform(grey_tap())
|
||||
waitForReadingList()
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityLabel("Add to Reading List"))
|
||||
.perform(grey_tap())
|
||||
|
||||
// Check that it appears in the reading list home panel and make sure it marked as unread
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityID("url"))
|
||||
.perform(grey_tap())
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityLabel("Reading list"))
|
||||
.perform(grey_tap())
|
||||
tester().waitForView(withAccessibilityLabel: "Readable page, unread, localhost")
|
||||
// Select to Read
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityLabel("localhost"))
|
||||
.perform(grey_tap())
|
||||
tester().waitForWebViewElementWithAccessibilityLabel("Readable page")
|
||||
|
||||
// Go back to the reading list panel
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityID("url"))
|
||||
.perform(grey_tap())
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityLabel("Reading list"))
|
||||
.perform(grey_tap())
|
||||
|
||||
// Make sure the article is marked as read
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityLabel("Readable page"))
|
||||
.inRoot(grey_kindOfClass(NSClassFromString("UITableViewCellContentView")!))
|
||||
.assert(grey_notNil())
|
||||
tester().waitForView(withAccessibilityLabel: "Readable page, read, localhost")
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityLabel("localhost"))
|
||||
.assert(grey_notNil())
|
||||
|
||||
// Remove the list entry
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityLabel("Readable page"))
|
||||
.inRoot(grey_kindOfClass(NSClassFromString("UITableViewCellContentView")!))
|
||||
.perform(grey_swipeSlowInDirection(GREYDirection.left))
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityLabel("Remove"))
|
||||
.inRoot(grey_kindOfClass(NSClassFromString("UISwipeActionStandardButton")!))
|
||||
.perform(grey_tap())
|
||||
|
||||
// check the entry no longer exist
|
||||
waitForEmptyReadingList()
|
||||
EarlGrey.select(elementWithMatcher: grey_accessibilityID("goBack")).perform(grey_tap())
|
||||
}
|
||||
|
||||
override func tearDown() {
|
||||
BrowserUtils.resetToAboutHome(tester())
|
||||
BrowserUtils.clearPrivateData(tester: tester())
|
||||
super.tearDown()
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue