Skip to content

Commit

Permalink
US1762585: Update bitrise-step to use xcode-test v5 and update e2e te…
Browse files Browse the repository at this point in the history
…sts (#82)

* US1762585: Update bitrise-step to use xcode-test v5

* US1762585: Use Optionals to mantain compatibility in both Xcode 13 and Xcode 15

* US1762585: Update e2e tests

* US1762585: Improve matcher based on platform using type
  • Loading branch information
abaeza-wp authored Jan 4, 2024
1 parent 7c84618 commit c120b39
Show file tree
Hide file tree
Showing 6 changed files with 81 additions and 50 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,8 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase {
accessCheckoutReactNative.initialiseCardValidation(config: config) { success in
XCTAssertEqual(true, (success as! Bool))

let field = self.panACUITextField!.uiTextField
field.insertText("4444333322221111")
let field = self.panACUITextField?.uiTextField
field!.insertText("4444333322221111")

XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 1)

Expand Down Expand Up @@ -164,11 +164,11 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase {
accessCheckoutReactNative.initialiseCardValidation(config: config) { success in
XCTAssertTrue(success as! Bool)

let field = self.panACUITextField!.uiTextField
field.insertText("4444333322221111")
field.deleteBackward()
let field = self.panACUITextField?.uiTextField
field!.insertText("4444333322221111")
field!.deleteBackward()

XCTAssertEqual(field.text, "444433332222111")
XCTAssertEqual(field!.text, "444433332222111")

XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 2)

Expand Down Expand Up @@ -196,8 +196,8 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase {
accessCheckoutReactNative.initialiseCardValidation(config: config) { success in
XCTAssertEqual(true, (success as! Bool))

let field = self.cvcACUITextField!.uiTextField
field.insertText("123")
let field = self.cvcACUITextField?.uiTextField
field!.insertText("123")
XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 1)

let event = accessCheckoutReactNative.eventsSent[0]
Expand All @@ -224,10 +224,10 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase {
accessCheckoutReactNative.initialiseCardValidation(config: config) { success in
XCTAssertTrue(success as! Bool)

let field = self.cvcACUITextField!.uiTextField
field.insertText("123")
field.deleteBackward()
XCTAssertEqual(field.text, "12")
let field = self.cvcACUITextField?.uiTextField
field!.insertText("123")
field!.deleteBackward()
XCTAssertEqual(field!.text, "12")

XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 2)

Expand Down Expand Up @@ -255,8 +255,8 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase {
accessCheckoutReactNative.initialiseCardValidation(config: config) { success in
XCTAssertEqual(true, (success as! Bool))

let field = self.expiryDateACUITextField!.uiTextField
field.insertText("10/34")
let field = self.expiryDateACUITextField?.uiTextField
field!.insertText("10/34")
XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 1)

let event = accessCheckoutReactNative.eventsSent[0]
Expand All @@ -283,10 +283,10 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase {
accessCheckoutReactNative.initialiseCardValidation(config: config) { success in
XCTAssertTrue(success as! Bool)

let field = self.expiryDateACUITextField!.uiTextField
field.insertText("10/34")
field.deleteBackward()
XCTAssertEqual(field.text, "10/3")
let field = self.expiryDateACUITextField?.uiTextField
field!.insertText("10/34")
field!.deleteBackward()
XCTAssertEqual(field!.text, "10/3")

XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 2)

Expand Down Expand Up @@ -318,8 +318,8 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase {
// Waiting for configuration to have successfully loaded
self.wait(0.5)

let field = self.panACUITextField!.uiTextField
field.insertText("4")
let field = self.panACUITextField?.uiTextField
field!.insertText("4")

XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 1)

Expand Down Expand Up @@ -356,9 +356,9 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase {
// Waiting for configuration to have successfully loaded
self.wait(0.5)

let field = self.panACUITextField!.uiTextField
field.insertText("4")
field.deleteBackward()
let field = self.panACUITextField?.uiTextField
field!.insertText("4")
field!.deleteBackward()

XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 2)

Expand Down Expand Up @@ -386,12 +386,12 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase {
accessCheckoutReactNative.initialiseCardValidation(config: config) { success in
XCTAssertTrue(success as! Bool)

let panField = self.panACUITextField!.uiTextField
panField.insertText("4444333322221111")
let expiryField = self.expiryDateACUITextField!.uiTextField
expiryField.insertText("12/34")
let cvcField = self.cvcACUITextField!.uiTextField
cvcField.insertText("123")
let panField = self.panACUITextField?.uiTextField
panField!.insertText("4444333322221111")
let expiryField = self.expiryDateACUITextField?.uiTextField
expiryField!.insertText("12/34")
let cvcField = self.cvcACUITextField?.uiTextField
cvcField!.insertText("123")

XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 4)

Expand Down Expand Up @@ -431,8 +431,8 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase {
// Waiting for configuration to have successfully loaded
self.wait(0.5)

let panField = self.panACUITextField!.uiTextField
panField.insertText("4444333322221111")
let panField = self.panACUITextField?.uiTextField
panField!.insertText("4444333322221111")

XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 1)

Expand Down Expand Up @@ -465,11 +465,12 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase {

accessCheckoutReactNative.initialiseCardValidation(config: config) { success in
XCTAssertTrue(success as! Bool)
let panField = self.panACUITextField!.uiTextField
panField.insertText("44443333")
self.triggerTextFieldDelegate(panField)
let panField = self.panACUITextField?.uiTextField

XCTAssertEqual(panField.text, "4444 3333")
panField!.insertText("44443333")
self.triggerTextFieldDelegate(panField!)

XCTAssertEqual(panField!.text, "4444 3333")

expectationToFulfill.fulfill()
} reject: { _, _, error in
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ class AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests: XCTestCase {
accessCheckoutReactNative.initialiseCvcOnlyValidation(config: config) { success in
XCTAssertEqual(true, (success as! Bool))

let field = self.cvcACUITextField!.uiTextField
field.insertText("123")
let field = self.cvcACUITextField?.uiTextField
field!.insertText("123")

XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 2)

Expand Down Expand Up @@ -115,10 +115,10 @@ class AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests: XCTestCase {
accessCheckoutReactNative.initialiseCvcOnlyValidation(config: config) { success in
XCTAssertTrue(success as! Bool)

let field = self.cvcACUITextField!.uiTextField
field.insertText("123")
field.deleteBackward()
XCTAssertEqual(field.text, "12")
let field = self.cvcACUITextField?.uiTextField
field!.insertText("123")
field!.deleteBackward()
XCTAssertEqual(field!.text, "12")

XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 3)

Expand Down Expand Up @@ -146,8 +146,8 @@ class AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests: XCTestCase {
accessCheckoutReactNative.initialiseCvcOnlyValidation(config: config) { success in
XCTAssertTrue(success as! Bool)

let field = self.cvcACUITextField!.uiTextField
field.insertText("123")
let field = self.cvcACUITextField?.uiTextField
field!.insertText("123")

XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 2)

Expand Down
2 changes: 1 addition & 1 deletion access-checkout-react-native-sdk/ios/bitrise.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ workflows:
- recreate-user-schemes@1:
inputs:
- project_path: "$BITRISE_SOURCE_DIR/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative.xcodeproj"
- xcode-test@4:
- xcode-test@5:
inputs:
- scheme: AccessCheckoutReactNative
- project_path: "$BITRISE_SOURCE_DIR/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative.xcworkspace"
Expand Down
30 changes: 30 additions & 0 deletions demo-app/e2e/page-objects/AccessCheckoutTextInputPO.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/* eslint-disable @typescript-eslint/no-var-requires */
const { UIComponentPO } = require('./UIComponentPO');
const { expect, element, by, device } = require('detox');
/* eslint-enable @typescript-eslint/no-var-requires */

class AccessCheckoutTextInputPO extends UIComponentPO {
component() {
const selector =
device.getPlatform() === 'ios'
? by.type('UITextField')
: by.type('android.widget.EditText');

return element(selector.withAncestor(by.id(this.id)));
}

async type(text, expectedText = '') {
await this.component().typeText(text);

if (expectedText) {
await expect(this.component()).toHaveText(expectedText);
}
}

async text() {
const attributes = await this.getAttributes();
return attributes.text;
}
}

module.exports = { AccessCheckoutTextInputPO };
8 changes: 4 additions & 4 deletions demo-app/e2e/page-objects/CardFlowPO.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
/* eslint-disable @typescript-eslint/no-var-requires */
const { SessionLabelPO } = require('./SessionLabelPO');
const { TextInputPO } = require('./TextInputPO');
const { TogglePO } = require('./TogglePO');
const { UIComponentPO } = require('./UIComponentPO');
const { AccessCheckoutTextInputPO } = require('./AccessCheckoutTextInputPO');
/* eslint-enable @typescript-eslint/no-var-requires */

class CardFlowPO {
constructor() {
this.pan = new TextInputPO('panInput');
this.expiryDate = new TextInputPO('expiryDateInput');
this.cvc = new TextInputPO('cvcInput');
this.pan = new AccessCheckoutTextInputPO('panInput');
this.expiryDate = new AccessCheckoutTextInputPO('expiryDateInput');
this.cvc = new AccessCheckoutTextInputPO('cvcInput');
this.submitButton = new UIComponentPO('submitButton');
this.cardAndCvcSessionsToggle = new TogglePO('cardAndCvcSessionsToggle');
this.cardSession = new SessionLabelPO('cardSession');
Expand Down
4 changes: 2 additions & 2 deletions demo-app/e2e/page-objects/CvcOnlyFlowPO.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
/* eslint-disable @typescript-eslint/no-var-requires */
const { SessionLabelPO } = require('./SessionLabelPO');
const { TextInputPO } = require('./TextInputPO');
const { AccessCheckoutTextInputPO } = require('./AccessCheckoutTextInputPO');
const { UIComponentPO } = require('./UIComponentPO');
/* eslint-enable @typescript-eslint/no-var-requires */

class CvcOnlyFlowPO {
constructor() {
this.cvcOnlyNavItem = new UIComponentPO('nav-cvc');
this.cvc = new TextInputPO('cvcInput');
this.cvc = new AccessCheckoutTextInputPO('cvcInput');
this.submitButton = new UIComponentPO('submitButton');
this.cvcSession = new SessionLabelPO('cvcSession');
}
Expand Down

0 comments on commit c120b39

Please sign in to comment.