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

US1762585: Update bitrise-step to use xcode-test v5 and update e2e tests #82

Merged
merged 7 commits into from
Jan 4, 2024
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 @@ -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