Detox uses Matchers to find UI elements
in your app, Actions to emulate user interaction with those elements
and Expectations to verify values on those elements
.
Actions are functions that emulate user behavior. They are being performed on matched elements.
.tap()
.longPress()
.multiTap()
.tapAtPoint()
.tapBackspaceKey()
.tapReturnKey()
.typeText()
.replaceText()
.clearText()
.scroll()
.scrollTo()
.swipe()
.setColumnToValue()
iOS only.pinchWithAngle()
iOS only.setDatePickerDate()
iOS only
Simulates a tap on an element.
await element(by.id('tappable')).tap();
Simulates a long press on an element. duration - long press time interval. (iOS only)
await element(by.id('tappable')).longPress();
Simulates multiple taps on an element.
await element(by.id('tappable')).multiTap(3);
Simulates a tap at a specific point on an element.
Note: The point coordinates are relative to the matched element and the element size could changes on different devices or even when changing the device font size.
await element(by.id('tappable')).tapAtPoint({x:5, y:10});
Taps the backspace key on the built-in keyboard.
await element(by.id('textField')).tapBackspaceKey();
Taps the return key on the built-in keyboard.
await element(by.id('textField')).tapReturnKey();
Uses the builtin keyboard to type text into a text field.
await element(by.id('textField')).typeText('passcode');
Pastes text into a text field.
await element(by.id('textField')).replaceText('passcode again');
Clears text from a text field.
await element(by.id('textField')).clearText();
Scrolls a given amount of pixels in the provided direction, starting from the provided start positions.
pixels - independent device pixels
direction - left/right/up/down
startPositionX - the X starting scroll position, in percentage; valid input: [0.0, 1.0], NaN
; default: NaN
—choose the best value automatically
startPositionY - the Y starting scroll position, in percentage; valid input: [0.0, 1.0], NaN
; default: NaN
—choose the best value automatically
await element(by.id('scrollView')).scroll(100, 'down', NaN, 0.85);
await element(by.id('scrollView')).scroll(100, 'up');
Scrolls to the provided edge.
edge - left/right/top/bottom
await element(by.id('scrollView')).scrollTo('bottom');
await element(by.id('scrollView')).scrollTo('top');
Swipes in the provided direction at the provided speed, started from percentage.
direction - left/right/up/down speed - fast/slow - default is fast percentage - (optional) screen percentage to swipe; valid input: [0.0, 1.0]
await element(by.id('scrollView')).swipe('down');
await element(by.id('scrollView')).swipe('down', 'fast');
await element(by.id('scrollView')).swipe('down', 'fast', 0.5);
Sets a picker view’s column to the given value. This function supports both date pickers and general picker views.
column - date picker column index value - string value to set in column
await expect(element(by.id('pickerView'))).toBeVisible();
await element(by.id('pickerView')).setColumnToValue(1,"6");
await element(by.id('pickerView')).setColumnToValue(2,"34");
Note: When working with date pickers, you should always set an explicit locale when launching your app in order to prevent flakiness from different date and time styles. See here for more information.
Sets the date of a date picker to a date generated from the provided string and date format.
dateString - string representing a date in the supplied dateFormat dateFormat - format for the dateString supplied
await expect(element(by.id('datePicker'))).toBeVisible();
await element(by.id('datePicker')).setDatePickerDate('2019-02-06T05:10:00-08:00', "yyyy-MM-dd'T'HH:mm:ssZZZZZ");
Pinches in the given direction with speed and angle.
direction - inward/outward speed - slow/fast - default is slow angle - value in radiant - default is 0
await expect(element(by.id('PinchableScrollView'))).toBeVisible();
await element(by.id('PinchableScrollView')).pinchWithAngle('outward', 'slow', 0);