Skip to content

Commit

Permalink
fix: Address pr comments
Browse files Browse the repository at this point in the history
  • Loading branch information
Squidonomics committed Feb 24, 2024
1 parent 41f6319 commit 2eafd3f
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 25 deletions.
6 changes: 3 additions & 3 deletions Sources/WebDriver/Element.swift
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ public struct Element {
}

/// Double clicks an element by id.
public func doubleClick(retryTimeout: TimeInterval? = nil, element: String) throws {
public func doubleClick(element: String, retryTimeout: TimeInterval? = nil) throws {
let request = Requests.SessionTouchDoubleClick(session: session.id, element: id)
let result = try poll(timeout: retryTimeout ?? session.defaultRetryTimeout) {
do {
Expand All @@ -107,8 +107,8 @@ public struct Element {
/// - xOffset: The x offset in pixels to flick by.
/// - yOffset: The y offset in pixels to flick by.
/// - speed: The speed in pixels per seconds.
public func precisionFlick(retryTimeout: TimeInterval? = nil, element: String, xOffset: Int, yOffset: Int, speed: Int) throws {
let request = Requests.SessionTouchFlickExact(session: session.id, element: id, xOffset: xOffset, yOffset: yOffset, speed: speed)
public func flick(element: String, xOffset: Double, yOffset: Double, speed: Double, retryTimeout: TimeInterval? = nil) throws {
let request = Requests.SessionTouchFlickElement(session: session.id, element: id, xOffset: xOffset, yOffset: yOffset, speed: speed)
let result = try poll(timeout: retryTimeout ?? session.defaultRetryTimeout) {
do {
// Immediately bubble most failures, only retry on element not interactable.
Expand Down
41 changes: 21 additions & 20 deletions Sources/WebDriver/Requests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -547,54 +547,55 @@ public enum Requests {
public var element: String

public var pathComponents: [String] { ["session", session, "touch", "doubleclick"] }
public var method: HTTPMethod {.post}
public var body: Body {.init(element: element)}
public var method: HTTPMethod { .post }
public var body: Body { .init(element: element) }

public struct Body: Codable {
public var element: String
}
}

// https://www.selenium.dev/documentation/legacy/json_wire_protocol/#sessionsessionidtouchflick
public struct SessionTouchFlickExact: Request {
public struct SessionTouchFlickElement: Request {
public var session: String
public var element: String
public var xOffset: Int
public var yOffset: Int
public var speed: Int
public var xOffset: Double
public var yOffset: Double
public var speed: Double

public var pathComponents: [String] { ["session", session, "touch", "flick"] }
public var method: HTTPMethod {.post}
public var body: Body {.init(xOffset: xOffset, yOffset: yOffset, speed: speed)}
public var method: HTTPMethod { .post }
public var body: Body { .init(xOffset: xOffset, yOffset: yOffset, speed: speed) }

public struct Body: Codable {
public var xOffset: Int
public var yOffset: Int
public var speed: Int
public var xOffset: Double
public var yOffset: Double
public var speed: Double
}
}

// https://www.selenium.dev/documentation/legacy/json_wire_protocol/#sessionsessionidtouchflick-1
public struct SessionTouchFlick: Request {
public var session: String
public var xSpeed: Int
public var ySpeed: Int

public var xSpeed: Double
public var ySpeed: Double
public var pathComponents: [String] { ["session", session, "touch", "flick"] }
public var method: HTTPMethod {.post}
public var body: Body {.init(xSpeed: xSpeed, ySpeed: ySpeed)}

public var method: HTTPMethod { .post }
public var body: Body { .init(xSpeed: xSpeed, ySpeed: ySpeed) }
public struct Body: Codable {
public var xSpeed: Int
public var ySpeed: Int
public var xSpeed: Double
public var ySpeed: Double
}
}

// https://www.selenium.dev/documentation/legacy/json_wire_protocol/#sessionsessionidsource
public struct SessionSource: Request {
public var session: String

public var pathComponents: [String] { ["session", session, "source"] }
public var method: HTTPMethod {.get}
public var method: HTTPMethod { .get }

public typealias Response = ResponseWithValue<ResponseValue>

Expand Down
2 changes: 1 addition & 1 deletion Sources/WebDriver/Session.swift
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ public class Session {
/// - retryTimeout: Optional value to override defaultRetryTimeout.
/// - xSpeed: The x speed in pixels per second.
/// - ySpeed: The y speed in pixels per second.
public func flick( xSpeed: Int, ySpeed: Int) throws {
public func flick(xSpeed: Double, ySpeed: Double) throws {
try webDriver.send(Requests.SessionTouchFlick(session: id, xSpeed: xSpeed, ySpeed: ySpeed))
}

Expand Down
3 changes: 2 additions & 1 deletion Tests/UnitTests/APIToRequestMappingTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -228,14 +228,15 @@ class APIToRequestMappingTests: XCTestCase {
let session = Session(webDriver: mockWebDriver, existingId: "mySession")
let element = Element(session: session, id: "myElement")
mockWebDriver.expect(path: "session/mySession/touch/flick", method: .post)
XCTAssertNotNil(try element.precisionFlick(element: "myElement", xOffset: 5, yOffset: 20, speed: 2003))
XCTAssertNotNil(try element.flick(element: "myElement", xOffset: 5, yOffset: 20, speed: 2003))
}

func testSessionFlick() throws {
let mockWebDriver: MockWebDriver = MockWebDriver()
let session = Session(webDriver: mockWebDriver, existingId: "mySession")
mockWebDriver.expect(path: "session/mySession/touch/flick", method: .post)
XCTAssertNotNil(try session.flick(xSpeed: 5, ySpeed: 20))
}

func testSessionSource() throws {
let mockWebDriver: MockWebDriver = MockWebDriver()
Expand Down

0 comments on commit 2eafd3f

Please sign in to comment.