diff --git a/404.html b/404.html index 8e3f613a22..84937e90a3 100644 --- a/404.html +++ b/404.html @@ -11,13 +11,13 @@ - +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- + \ No newline at end of file diff --git a/assets/js/881ac13d.2ab7acd9.js b/assets/js/881ac13d.2ab7acd9.js deleted file mode 100644 index ab460769b6..0000000000 --- a/assets/js/881ac13d.2ab7acd9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8768],{15680:(e,t,n)=>{n.d(t,{xA:()=>d,yg:()=>c});var a=n(96540);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=a.createContext({}),s=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},m="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},y=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,l=e.originalType,p=e.parentName,d=r(e,["components","mdxType","originalType","parentName"]),m=s(n),y=i,c=m["".concat(p,".").concat(y)]||m[y]||g[y]||l;return n?a.createElement(c,o(o({ref:t},d),{},{components:n})):a.createElement(c,o({ref:t},d))}));function c(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var l=n.length,o=new Array(l);o[0]=y;var r={};for(var p in t)hasOwnProperty.call(t,p)&&(r[p]=t[p]);r.originalType=e,r[m]="string"==typeof e?e:i,o[1]=r;for(var s=2;s{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>g,frontMatter:()=>l,metadata:()=>r,toc:()=>s});var a=n(58168),i=(n(96540),n(15680));const l={},o="Actions",r={unversionedId:"api/actions",id:"api/actions",title:"Actions",description:"Detox uses matchers to find UI elements in your app and actions to simulate user interaction with those elements.",source:"@site/../docs/api/actions.md",sourceDirName:"api",slug:"/api/actions",permalink:"/Detox/docs/next/api/actions",draft:!1,editUrl:"https://github.com/wix/Detox/edit/master/docs/../docs/api/actions.md",tags:[],version:"current",frontMatter:{},sidebar:"apiSidebar",previous:{title:"Matchers",permalink:"/Detox/docs/next/api/matchers"},next:{title:"Expect",permalink:"/Detox/docs/next/api/expect"}},p={},s=[{value:"Methods",id:"methods",level:2},{value:"tap(point)",id:"tappoint",level:3},{value:"multiTap(times)",id:"multitaptimes",level:3},{value:"longPress(duration)",id:"longpressduration",level:3},{value:"longPressAndDrag(duration, normalizedPositionX, normalizedPositionY, targetElement, normalizedTargetPositionX, normalizedTargetPositionY, speed, holdDuration)",id:"longpressanddragduration-normalizedpositionx-normalizedpositiony-targetelement-normalizedtargetpositionx-normalizedtargetpositiony-speed-holdduration",level:3},{value:"swipe(direction[, speed, normalizedOffset, normalizedStartingPointX, normalizedStartingPointY])",id:"swipedirection-speed-normalizedoffset-normalizedstartingpointx-normalizedstartingpointy",level:3},{value:"pinch(scale, speed, angle) iOS only",id:"pinchscale-speed-angle--ios-only",level:3},{value:"scrollToIndex(index) Android only",id:"scrolltoindexindex--android-only",level:3},{value:"scroll(offset, direction[, startPositionX, startPositionY])",id:"scrolloffset-direction-startpositionx-startpositiony",level:3},{value:"whileElement(element)",id:"whileelementelement",level:3},{value:"scrollTo(edge[, startPositionX, startPositionY])",id:"scrolltoedge-startpositionx-startpositiony",level:3},{value:"typeText(text)",id:"typetexttext",level:3},{value:"replaceText(text)",id:"replacetexttext",level:3},{value:"clearText()",id:"cleartext",level:3},{value:"tapReturnKey()",id:"tapreturnkey",level:3},{value:"tapBackspaceKey()",id:"tapbackspacekey",level:3},{value:"setColumnToValue(column, value) iOS only",id:"setcolumntovaluecolumn-value--ios-only",level:3},{value:"setDatePickerDate(dateString, dateFormat)",id:"setdatepickerdatedatestring-dateformat",level:3},{value:"adjustSliderToPosition(normalizedPosition)",id:"adjustslidertopositionnormalizedposition",level:3},{value:"getAttributes()",id:"getattributes",level:3},{value:"iOS-Only",id:"ios-only",level:4},{value:"Android-Only",id:"android-only",level:4},{value:"takeScreenshot(name)",id:"takescreenshotname",level:3},{value:"performAccessibilityAction(actionName)",id:"performaccessibilityactionactionname",level:3},{value:"Deprecated Methods",id:"deprecated-methods",level:2},{value:"tapAtPoint(point)",id:"tapatpointpoint",level:3},{value:"pinchWithAngle(direction, speed, angle) iOS only",id:"pinchwithangledirection-speed-angle--ios-only",level:3}],d={toc:s},m="wrapper";function g(e){let{components:t,...n}=e;return(0,i.yg)(m,(0,a.A)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.yg)("h1",{id:"actions"},"Actions"),(0,i.yg)("p",null,"Detox uses ",(0,i.yg)("a",{parentName:"p",href:"/Detox/docs/next/api/matchers"},"matchers")," to find UI elements in your app and actions to simulate user interaction with those elements."),(0,i.yg)("p",null,"Use ",(0,i.yg)("a",{parentName:"p",href:"/Detox/docs/next/api/expect"},"expectations")," to verify element states."),(0,i.yg)("h2",{id:"methods"},"Methods"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#tappoint"},(0,i.yg)("inlineCode",{parentName:"a"},".tap()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#multitaptimes"},(0,i.yg)("inlineCode",{parentName:"a"},".multiTap()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#longpressduration"},(0,i.yg)("inlineCode",{parentName:"a"},".longPress()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#longpressanddragduration-normalizedpositionx-normalizedpositiony-targetelement-normalizedtargetpositionx-normalizedtargetpositiony-speed-holdduration--ios-only"},(0,i.yg)("inlineCode",{parentName:"a"},".longPressAndDrag()"))," ",(0,i.yg)("strong",{parentName:"li"},"iOS only")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#swipedirection-speed-normalizedoffset-normalizedstartingpointx-normalizedstartingpointy"},(0,i.yg)("inlineCode",{parentName:"a"},".swipe()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#pinchscale-speed-angle--ios-only"},(0,i.yg)("inlineCode",{parentName:"a"},".pinch()"))," ",(0,i.yg)("strong",{parentName:"li"},"iOS only")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#scrolltoindexindex--android-only"},(0,i.yg)("inlineCode",{parentName:"a"},".scrollToIndex()"))," ",(0,i.yg)("strong",{parentName:"li"},"Android only")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#scrolloffset-direction-startpositionx-startpositiony"},(0,i.yg)("inlineCode",{parentName:"a"},".scroll()")),(0,i.yg)("ul",{parentName:"li"},(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#whileelementelement"},(0,i.yg)("inlineCode",{parentName:"a"},"whileElement()"))))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#scrolltoedge"},(0,i.yg)("inlineCode",{parentName:"a"},".scrollTo()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#typetexttext"},(0,i.yg)("inlineCode",{parentName:"a"},".typeText()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#replacetexttext"},(0,i.yg)("inlineCode",{parentName:"a"},".replaceText()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#cleartext"},(0,i.yg)("inlineCode",{parentName:"a"},".clearText()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#tapreturnkey"},(0,i.yg)("inlineCode",{parentName:"a"},".tapReturnKey()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#tapbackspacekey"},(0,i.yg)("inlineCode",{parentName:"a"},".tapBackspaceKey()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#setcolumntovaluecolumn-value--ios-only"},(0,i.yg)("inlineCode",{parentName:"a"},".setColumnToValue()"))," ",(0,i.yg)("strong",{parentName:"li"},"iOS only")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#setdatepickerdatedatestring-dateformat"},(0,i.yg)("inlineCode",{parentName:"a"},".setDatePickerDate()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#adjustslidertopositionnormalizedposition"},(0,i.yg)("inlineCode",{parentName:"a"},".adjustSliderToPosition()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#getattributes"},(0,i.yg)("inlineCode",{parentName:"a"},".getAttributes()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#takescreenshotname"},(0,i.yg)("inlineCode",{parentName:"a"},".takeScreenshot(name)"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#performaccessibilityactionactionname"},(0,i.yg)("inlineCode",{parentName:"a"},".performAccessibilityAction()")))),(0,i.yg)("h3",{id:"tappoint"},(0,i.yg)("inlineCode",{parentName:"h3"},"tap(point)")),(0,i.yg)("p",null,"Simulates a tap on the element at the specified point, or at element\u2019s activation point if no point is specified."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"point"),"\u2014a point in the element\u2019s coordinate space (optional, valid input: object with x and y numerical values, default is ",(0,i.yg)("inlineCode",{parentName:"p"},"null"),")"),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Note:")," Special care should be applied when specifying a point with this method. Elements may have different dimensions when displayed on different device screen sizes, different text sizes, etc."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('tappable')).tap();\nawait element(by.id('tappable')).tap({x:5, y:10});\n")),(0,i.yg)("h3",{id:"multitaptimes"},(0,i.yg)("inlineCode",{parentName:"h3"},"multiTap(times)")),(0,i.yg)("p",null,"Simulates multiple taps on the element at its activation point. All taps are applied as a part of the same gesture and there is no synchronization attempt between taps."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"times"),"\u2014the number of taps to simulate (number, 1 and above)"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('tappable')).multiTap(3);\n")),(0,i.yg)("h3",{id:"longpressduration"},(0,i.yg)("inlineCode",{parentName:"h3"},"longPress(duration)")),(0,i.yg)("p",null,"Simulates a long press on the element at its activation point."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"duration")," (iOS only) \u2014 press during time, in milliseconds. Optional (default is 1000 ms)."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('tappable')).longPress();\nawait element(by.id('tappable')).longPress(1500);\n")),(0,i.yg)("h3",{id:"longpressanddragduration-normalizedpositionx-normalizedpositiony-targetelement-normalizedtargetpositionx-normalizedtargetpositiony-speed-holdduration"},(0,i.yg)("inlineCode",{parentName:"h3"},"longPressAndDrag(duration, normalizedPositionX, normalizedPositionY, targetElement, normalizedTargetPositionX, normalizedTargetPositionY, speed, holdDuration)")),(0,i.yg)("p",null,"Simulates a long press on the element and then drag it to a position of another element."),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"duration")," \u2014the duration to press for, in ms (required) ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"normalizedPositionX")," \u2014 X coordinate of the starting point, relative to the element width (required, a number between 0.0 and 1.0, ",(0,i.yg)("inlineCode",{parentName:"li"},"NaN")," \u2014 choose an optimal value automatically) ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"normalizedPositionY")," \u2014 Y coordinate of the starting point, relative to the element height (required, a number between 0.0 and 1.0, ",(0,i.yg)("inlineCode",{parentName:"li"},"NaN")," \u2014 choose an optimal value automatically) ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"targetElement"),"\u2014 the target element to drag to (required) ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"normalizedTargetPositionX")," \u2014 X coordinate of the ending point, relative to the target element width (optional, a number between 0.0 and 1.0, ",(0,i.yg)("inlineCode",{parentName:"li"},"NaN")," \u2014 choose an optimal value automatically) ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"normalizedTargetPositionY")," \u2014 Y coordinate of the ending point, relative to the target element height (optional, a number between 0.0 and 1.0, ",(0,i.yg)("inlineCode",{parentName:"li"},"NaN")," \u2014 choose an optimal value automatically) ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"speed")," \u2014 the speed of the drag (optional, valid input: ",(0,i.yg)("inlineCode",{parentName:"li"},'"fast"'),"/",(0,i.yg)("inlineCode",{parentName:"li"},'"slow"')," , default is ",(0,i.yg)("inlineCode",{parentName:"li"},'"fast"'),") ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"holdDuration")," \u2014 the duration before releasing at the end, in ms (optional, default is 1000)")),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('elementToDrag')).longPressAndDrag(2000, NaN, NaN, element(by.id('targetElement')), NaN, NaN);\nawait element(by.id('cellId_1')).longPressAndDrag(2000, 0.9, NaN, element(by.id('cellId_6')), 0.9, NaN, 'slow', 0);\n")),(0,i.yg)("h3",{id:"swipedirection-speed-normalizedoffset-normalizedstartingpointx-normalizedstartingpointy"},(0,i.yg)("inlineCode",{parentName:"h3"},"swipe(direction[, speed, normalizedOffset, normalizedStartingPointX, normalizedStartingPointY])")),(0,i.yg)("p",null,"Simulates a swipe on the element with the provided options."),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"direction")," \u2014 the direction of the swipe (required, valid input: ",(0,i.yg)("inlineCode",{parentName:"li"},'"left"'),"/",(0,i.yg)("inlineCode",{parentName:"li"},'"right"'),"/",(0,i.yg)("inlineCode",{parentName:"li"},'"up"'),"/",(0,i.yg)("inlineCode",{parentName:"li"},'"down"'),") ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"speed")," \u2014 the speed of the swipe (optional, valid input: ",(0,i.yg)("inlineCode",{parentName:"li"},'"fast"'),"/",(0,i.yg)("inlineCode",{parentName:"li"},'"slow"')," , default is ",(0,i.yg)("inlineCode",{parentName:"li"},'"fast"'),") ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"normalizedOffset")," \u2014 swipe amount relative to the screen width/height (optional, a number between 0.0 and 1.0, default is ",(0,i.yg)("inlineCode",{parentName:"li"},"NaN")," \u2014 choose an optimal value automatically) ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"normalizedStartingPointX")," \u2014 X coordinate of the swipe starting point, relative to the element width (optional, a number between 0.0 and 1.0, default is ",(0,i.yg)("inlineCode",{parentName:"li"},"NaN")," \u2014 choose an optimal value automatically) ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"normalizedStartingPointY")," \u2014 Y coordinate of the swipe starting point, relative to the element height (optional, a number between 0.0 and 1.0, default is ",(0,i.yg)("inlineCode",{parentName:"li"},"NaN")," \u2014 choose an optimal value automatically)")),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('scrollView')).swipe('down');\nawait element(by.id('scrollView')).swipe('down', 'slow'); // set swipe speed\nawait element(by.id('scrollView')).swipe('down', 'fast', 0.75); // set swipe amount\nawait element(by.id('scrollView')).swipe('down', 'fast', NaN, 0.8); // set starting point X\nawait element(by.id('scrollView')).swipe('down', 'fast', NaN, NaN, 0.25); // set starting point Y\n")),(0,i.yg)("h3",{id:"pinchscale-speed-angle--ios-only"},(0,i.yg)("inlineCode",{parentName:"h3"},"pinch(scale, speed, angle)")," iOS only"),(0,i.yg)("p",null,"Simulates a pinch on the element with the provided options."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"scale"),"\u2014the scale of the pinch gesture; use a scale between 0 and 1 to zoom out, and a scale greater than 1 to zoom in; the system makes a best effort to accommodate the requested scale, taking into account the element\u2019s dimensions (valid input: (0.0, inf]) ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"speed"),"\u2014the speed of the pinch (optional, valid input: ",(0,i.yg)("inlineCode",{parentName:"p"},'"fast"'),"/",(0,i.yg)("inlineCode",{parentName:"p"},'"slow"')," , default is ",(0,i.yg)("inlineCode",{parentName:"p"},'"slow"'),") ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"angle"),"\u2014the angle of the pinch, in radians (optional, default is 0.0)"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('PinchableScrollView')).pinch(1.1); //Zooms in a little bit\nawait element(by.id('PinchableScrollView')).pinch(2.0); //Zooms in a lot\nawait element(by.id('PinchableScrollView')).pinch(0.001); //Zooms out a lot\n")),(0,i.yg)("h3",{id:"scrolltoindexindex--android-only"},(0,i.yg)("inlineCode",{parentName:"h3"},"scrollToIndex(index)")," Android only"),(0,i.yg)("p",null,"Scrolls until it reaches the element with the provided index. This works for ",(0,i.yg)("inlineCode",{parentName:"p"},"ReactScrollView")," and ",(0,i.yg)("inlineCode",{parentName:"p"},"ReactHorizontalScrollView"),"."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"index"),"\u2014the index of the target element ",(0,i.yg)("br",null)),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('scrollView')).scrollToIndex(0);\n")),(0,i.yg)("h3",{id:"scrolloffset-direction-startpositionx-startpositiony"},(0,i.yg)("inlineCode",{parentName:"h3"},"scroll(offset, direction[, startPositionX, startPositionY])")),(0,i.yg)("p",null,"Simulates a scroll on the element with the provided options."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"offset"),"\u2014the offset to scroll, in points ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"direction"),"\u2014the scroll\u2019s direction (valid input: ",(0,i.yg)("inlineCode",{parentName:"p"},'"left"'),"/",(0,i.yg)("inlineCode",{parentName:"p"},'"right"'),"/",(0,i.yg)("inlineCode",{parentName:"p"},'"up"'),"/",(0,i.yg)("inlineCode",{parentName:"p"},'"down"'),") ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"startPositionX"),"\u2014the normalized x percentage of the element to use as scroll start point (optional, valid input: ","[","0.0, 1.0], ",(0,i.yg)("inlineCode",{parentName:"p"},"NaN"),"\u2014choose an optimal value automatically, default is ",(0,i.yg)("inlineCode",{parentName:"p"},"NaN"),") ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"startPositionY"),"\u2014the normalized y percentage of the element to use as scroll start point (optional, valid input: ","[","0.0, 1.0], ",(0,i.yg)("inlineCode",{parentName:"p"},"NaN"),"\u2014choose an optimal value automatically, default is ",(0,i.yg)("inlineCode",{parentName:"p"},"NaN"),")"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('scrollView')).scroll(100, 'up');\nawait element(by.id('scrollView')).scroll(100, 'down', NaN, 0.85);\n")),(0,i.yg)("h3",{id:"whileelementelement"},(0,i.yg)("inlineCode",{parentName:"h3"},"whileElement(element)")),(0,i.yg)("p",null,"Continuously scrolls the scroll element until the specified expectation is resolved. If the edge of the scroll element is reached while the expectation is not resolved, the operation is failed."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await waitFor(element(by.text('Text5'))).toBeVisible().whileElement(by.id('ScrollView630')).scroll(50, 'down');\n")),(0,i.yg)("h3",{id:"scrolltoedge-startpositionx-startpositiony"},(0,i.yg)("inlineCode",{parentName:"h3"},"scrollTo(edge[, startPositionX, startPositionY])")),(0,i.yg)("p",null,"Simulates a scroll to the specified edge."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"edge"),"\u2014the edge to scroll to (valid input: ",(0,i.yg)("inlineCode",{parentName:"p"},'"left"'),"/",(0,i.yg)("inlineCode",{parentName:"p"},'"right"'),"/",(0,i.yg)("inlineCode",{parentName:"p"},'"top"'),"/",(0,i.yg)("inlineCode",{parentName:"p"},'"bottom"'),") ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"startPositionX"),"\u2014the normalized x percentage of the element to use as scroll start point (optional, valid input: ","[","0.0, 1.0], ",(0,i.yg)("inlineCode",{parentName:"p"},"NaN"),"\u2014choose an optimal value automatically, default is ",(0,i.yg)("inlineCode",{parentName:"p"},"NaN"),") ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"startPositionY"),"\u2014the normalized y percentage of the element to use as scroll start point (optional, valid input: ","[","0.0, 1.0], ",(0,i.yg)("inlineCode",{parentName:"p"},"NaN"),"\u2014choose an optimal value automatically, default is ",(0,i.yg)("inlineCode",{parentName:"p"},"NaN"),")"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('scrollView')).scrollTo('bottom');\nawait element(by.id('scrollView')).scrollTo('top', NaN, 0.2);\n")),(0,i.yg)("h3",{id:"typetexttext"},(0,i.yg)("inlineCode",{parentName:"h3"},"typeText(text)")),(0,i.yg)("p",null,"Simulates typing of the specified text into the element, using the system\u2019s builtin keyboard and typing behavior."),(0,i.yg)("p",null,"On iOS, any element can be typed into, as long as it can become first responder and conforms to the ",(0,i.yg)("a",{parentName:"p",href:"https://developer.apple.com/documentation/uikit/uitextinput"},(0,i.yg)("inlineCode",{parentName:"a"},"UITextInput"))," protocol. Before typing the text, Detox attempts making the element the first responder, if it isn\u2019t already. If the element\u2019s window is not key window, Detox attempts making it the key window."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"text"),"\u2014the text to type (valid input: string)"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('textField')).typeText('passcode');\n")),(0,i.yg)("h3",{id:"replacetexttext"},(0,i.yg)("inlineCode",{parentName:"h3"},"replaceText(text)")),(0,i.yg)("p",null,"Replaces the element\u2019s text with the specified text, without using the system\u2019s builtin keyboard or typing behavior. ",(0,i.yg)("strong",{parentName:"p"},"Note"),", that using this method is faster than using ",(0,i.yg)("a",{parentName:"p",href:"#typetexttext"},(0,i.yg)("inlineCode",{parentName:"a"},".typeText()")),", but may not trigger all text input callbacks, causing an undefined state in your app."),(0,i.yg)("p",null,"On iOS, any element\u2019s text can be replaced, as long as it can become first responder and conforms to the ",(0,i.yg)("a",{parentName:"p",href:"https://developer.apple.com/documentation/uikit/uitextinput"},(0,i.yg)("inlineCode",{parentName:"a"},"UITextInput"))," protocol. Before replacing the text, Detox attempts making the element the first responder, if it isn\u2019t already. If the element\u2019s window is not key window, Detox attempts making it the key window."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"text"),"\u2014the text to replace with (valid input: string)"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('textField')).replaceText('passcode again');\n")),(0,i.yg)("h3",{id:"cleartext"},(0,i.yg)("inlineCode",{parentName:"h3"},"clearText()")),(0,i.yg)("p",null,"Simulates clearing the text of the element, using the system\u2019s builtin keyboard and typing behavior."),(0,i.yg)("p",null,"On iOS, any element\u2019s text can be cleared, as long as it can become first responder and conforms to the ",(0,i.yg)("a",{parentName:"p",href:"https://developer.apple.com/documentation/uikit/uitextinput"},(0,i.yg)("inlineCode",{parentName:"a"},"UITextInput"))," protocol. Before clearing the text, Detox attempts making the element the first responder, if it isn\u2019t already. If the element\u2019s window is not key window, Detox attempts making it the key window."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('textField')).clearText();\n")),(0,i.yg)("h3",{id:"tapreturnkey"},(0,i.yg)("inlineCode",{parentName:"h3"},"tapReturnKey()")),(0,i.yg)("p",null,"Simulates tapping on the return key into the element, using the system\u2019s builtin keyboard and typing behavior."),(0,i.yg)("p",null,"On iOS, any element can be sent return key input, as long as it can become first responder and conforms to the ",(0,i.yg)("a",{parentName:"p",href:"https://developer.apple.com/documentation/uikit/uitextinput"},(0,i.yg)("inlineCode",{parentName:"a"},"UITextInput"))," protocol. Before tapping on the return key, Detox attempts making the element the first responder, if it isn\u2019t already. If the element\u2019s window is not key window, Detox attempts making it the key window."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('textField')).tapReturnKey();\n")),(0,i.yg)("h3",{id:"tapbackspacekey"},(0,i.yg)("inlineCode",{parentName:"h3"},"tapBackspaceKey()")),(0,i.yg)("p",null,"Simulates tapping of the backspace key into the element, using the system\u2019s builtin keyboard and typing behavior."),(0,i.yg)("p",null,"On iOS, any element can be sent backspace key input, as long as it can become first responder and conforms to the ",(0,i.yg)("a",{parentName:"p",href:"https://developer.apple.com/documentation/uikit/uitextinput"},(0,i.yg)("inlineCode",{parentName:"a"},"UITextInput"))," protocol. Before tapping on the backspace key, Detox attempts making the element the first responder, if it isn\u2019t already. If the element\u2019s window is not key window, Detox attempts making it the key window."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('textField')).tapBackspaceKey();\n")),(0,i.yg)("h3",{id:"setcolumntovaluecolumn-value--ios-only"},(0,i.yg)("inlineCode",{parentName:"h3"},"setColumnToValue(column, value)")," iOS only"),(0,i.yg)("p",null,"Sets the element\u2019s specified column to the specified value, using the system\u2019s picker view APIs."),(0,i.yg)("p",null,"Values accepted by this method are strings only, and the system will do its best to match complex picker view cells to the string."),(0,i.yg)("p",null,"This function does not support date pickers. Use ",(0,i.yg)("a",{parentName:"p",href:"#setdatepickerdatedatestring-dateformat"},(0,i.yg)("inlineCode",{parentName:"a"},".setDatePickerDate()"))," instead."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"column"),"\u2014the element\u2019s column to set (valid input: number, 0 and above) ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"value"),"\u2014the string value to set (valid input: string)"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('pickerView')).setColumnToValue(1, \"6\");\nawait element(by.id('pickerView')).setColumnToValue(2, \"Hello World\");\n")),(0,i.yg)("blockquote",null,(0,i.yg)("p",{parentName:"blockquote"},(0,i.yg)("strong",{parentName:"p"},"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 ",(0,i.yg)("a",{parentName:"p",href:"/Detox/docs/next/api/device#9-languageandlocalelaunch-with-a-specific-language-andor-local-ios-only"},"here")," for more information.")),(0,i.yg)("h3",{id:"setdatepickerdatedatestring-dateformat"},(0,i.yg)("inlineCode",{parentName:"h3"},"setDatePickerDate(dateString, dateFormat)")),(0,i.yg)("p",null,"Sets the date-picker\u2019s date to the specified date and time."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"dateString"),"\u2014The date to set. Should match the format provided by ",(0,i.yg)("inlineCode",{parentName:"p"},"dateFormat"),".",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"dateFormat"),"\u2014The format of ",(0,i.yg)("inlineCode",{parentName:"p"},"dateString"),". Should be either ",(0,i.yg)("a",{parentName:"p",href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString"},(0,i.yg)("inlineCode",{parentName:"a"},"'ISO8601'")),", or an explicit date representation format, as supported by ",(0,i.yg)("a",{parentName:"p",href:"https://developer.apple.com/documentation/foundation/dateformatter"},(0,i.yg)("inlineCode",{parentName:"a"},"NSDateFormatter"))," on iOS / ",(0,i.yg)("a",{parentName:"p",href:"https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html"},(0,i.yg)("inlineCode",{parentName:"a"},"DateTimeFormatter"))," on Android (e.g. ",(0,i.yg)("inlineCode",{parentName:"p"},"'yyyy/MM/dd'"),")."),(0,i.yg)("blockquote",null,(0,i.yg)("p",{parentName:"blockquote"},(0,i.yg)("em",{parentName:"p"},"The recommended ",(0,i.yg)("inlineCode",{parentName:"em"},"dateFormat")," is ",(0,i.yg)("inlineCode",{parentName:"em"},"ISO8601"),"."))),(0,i.yg)("p",null,"Examples:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"const datePicker = element(by.id('datePicker'));\n\n// ISO8601:\nawait datePicker.setDatePickerDate('2019-02-06T05:10:00-08:00', 'ISO8601');\nawait datePicker.setDatePickerDate(new Date().toISOString(), 'ISO8601'); // toISOString returns an ISO8601 format with no timezone (UTC-0)\n\n// Explicit format:\nawait datePicker.setDatePickerDate('2019/02/06', \"yyyy/MM/dd\");\n")),(0,i.yg)("admonition",{type:"info"},(0,i.yg)("p",{parentName:"admonition"},"As far as element-matching is concerned, on Android, older versions of the popular ",(0,i.yg)("a",{parentName:"p",href:"https://www.npmjs.com/package/@react-native-community/datetimepicker"},(0,i.yg)("inlineCode",{parentName:"a"},"@react-native-community/datetimepicker"))," package don\u2019t allow for the specification of your own ",(0,i.yg)("a",{parentName:"p",href:"/Detox/docs/next/guide/test-id"},(0,i.yg)("inlineCode",{parentName:"a"},"testID"))," prop for the date-picker component. Therefore, you'd have to either upgrade your package to a newer version containing ",(0,i.yg)("a",{parentName:"p",href:"https://github.com/react-native-datetimepicker/datetimepicker/pull/705"},"PR datetimepicker#705")," inside, or use Detox's ",(0,i.yg)("a",{parentName:"p",href:"/Detox/docs/next/api/matchers#bytypeclassname"},(0,i.yg)("inlineCode",{parentName:"a"},"by.type"))," matcher as a workaround. For example:"),(0,i.yg)("pre",{parentName:"admonition"},(0,i.yg)("code",{parentName:"pre",className:"language-js"},"const datePicker = device.getPlatform() === 'android'\n ? element(by.type('android.widget.DatePicker'))\n : element(by.id('datePicker'));\n"))),(0,i.yg)("h3",{id:"adjustslidertopositionnormalizedposition"},(0,i.yg)("inlineCode",{parentName:"h3"},"adjustSliderToPosition(normalizedPosition)")),(0,i.yg)("p",null,"Manipulates the UI to change the displayed value of the slider element to a new value, based on a normalized position."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"normalizedPosition"),"\u2014The normalized position to adjust the slider element. (valid input: ","[","0, 1], 0 corresponds to the minimum value of the slider, and 1 corresponds to the maximum value)"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('slider')).adjustSliderToPosition(0.75);\n")),(0,i.yg)("h3",{id:"getattributes"},(0,i.yg)("inlineCode",{parentName:"h3"},"getAttributes()")),(0,i.yg)("p",null,"Returns an object, representing various attributes of the element."),(0,i.yg)("p",null,"Retrieved attributes are:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"text"),": The text value of any textual element."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"label"),": The label of the element. Matches ",(0,i.yg)("inlineCode",{parentName:"li"},"accessibilityLabel")," for iOS, and ",(0,i.yg)("inlineCode",{parentName:"li"},"contentDescription")," for android. Refer to the ",(0,i.yg)("a",{parentName:"li",href:"/Detox/docs/next/api/expect#tohavelabellabel"},(0,i.yg)("inlineCode",{parentName:"a"},".toHaveLabel()")," API")," in order to learn about caveats associated with this attribute in React Native apps."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"placeholder"),": The placeholder text value of the element. Matches ",(0,i.yg)("inlineCode",{parentName:"li"},"hint")," on android."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"enabled"),": Whether the element is enabled for user interaction."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"identifier"),": The identifier of the element. Matches ",(0,i.yg)("inlineCode",{parentName:"li"},"accessibilityIdentifier")," on iOS, and the main view tag, on Android - both commonly ",(0,i.yg)("strong",{parentName:"li"},"holding the component\u2019s test ID in React Native apps"),"."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"visible"),": Whether the element is visible. On iOS, visibility is calculated for the ",(0,i.yg)("a",{parentName:"li",href:"https://developer.apple.com/documentation/objectivec/nsobject/1615179-accessibilityactivationpoint"},"activation point"),". On Android, the attribute directly holds the value returned by ",(0,i.yg)("a",{parentName:"li",href:"https://developer.android.com/reference/kotlin/android/view/View#getglobalvisiblerect"},"View.getLocalVisibleRect()"),")."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"value"),": The value of the element, where applicable. For example: the position of a slider, or whether a checkbox has been marked. Matches ",(0,i.yg)("inlineCode",{parentName:"li"},"accessibilityValue"),", on iOS."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"frame"),": The frame of the element, in screen coordinate space.")),(0,i.yg)("h4",{id:"ios-only"},"iOS-Only"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"activationPoint"),": The ",(0,i.yg)("a",{parentName:"li",href:"https://developer.apple.com/documentation/objectivec/nsobject/1615179-accessibilityactivationpoint"},"activation point")," of the element, in element coordinate space."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"normalizedActivationPoint"),": The activation point of the element, in normalized percentage (","[","0.0, 1.0])."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"hittable"),": Whether the element is hittable at the activation point."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"elementFrame"),": The frame of the element, in container coordinate space."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"elementBounds"),": The bounds of the element, in element coordinate space."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"safeAreaInsets"),": The safe area insets of the element, in element coordinate space."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"elementSafeBounds"),": The safe area bounds of the element, in element coordinate space."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"date"),": The date of the element (in case the element is a date picker)."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"normalizedSliderPosition"),": The normalized slider position (in case the element is a slider)."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"contentOffset"),": The content offset (in case the element is a scroll view)."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"contentInset"),": The content inset (in case the element is a scroll view)."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"adjustedContentInset"),": The adjusted content inset (in case the element is a scroll view).")),(0,i.yg)("h4",{id:"android-only"},"Android-Only"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"visibility"),": The OS visibility type associated with the element: ",(0,i.yg)("inlineCode",{parentName:"li"},"visible"),", ",(0,i.yg)("inlineCode",{parentName:"li"},"invisible")," or ",(0,i.yg)("inlineCode",{parentName:"li"},"gone"),"."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"width"),": Width of the element, in pixels (deprecated)."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"height"),": Height of the element, in pixels (deprecated)."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"elevation"),": Elevation of the element."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"alpha"),": Alpha value for the element."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"focused"),": Whether the element is the one currently in focus."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"textSize"),": The text size for the text element."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"length"),": The length of the text element (character count).")),(0,i.yg)("p",null,"If the value for a given attribute is null or cannot be otherwise computed, the key will not be present, but empty strings may be found in the object."),(0,i.yg)("p",null,"If the query matches multiple elements, the attributes of all matched elements is returned as an array of objects under the ",(0,i.yg)("inlineCode",{parentName:"p"},"elements")," key."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"// import jestExpect from 'expect';\nconst jestExpect = require('expect').default;\n\n// ...\nconst attributes = await element(by.text('Tap Me')).getAttributes();\njestExpect(attributes.text).toBe('Tap Me');\n\nconst multipleMatchedElements = await element(by.text('Multiple')).getAttributes();\njestExpect(multipleMatchedElements.elements.length).toBe(5);\njestExpect(multipleMatchedElements.elements[0].identifier).toBe('FirstElement');\n")),(0,i.yg)("h3",{id:"takescreenshotname"},(0,i.yg)("inlineCode",{parentName:"h3"},"takeScreenshot(name)")),(0,i.yg)("p",null,"Takes a screenshot of the matched element. For full details on taking screenshots with Detox, refer to the ",(0,i.yg)("a",{parentName:"p",href:"/Detox/docs/next/guide/taking-screenshots"},"screenshots guide"),"."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"name"),"\u2014the name of the screenshot"),(0,i.yg)("h3",{id:"performaccessibilityactionactionname"},(0,i.yg)("inlineCode",{parentName:"h3"},"performAccessibilityAction(actionName)")),(0,i.yg)("p",null,"Triggers an ",(0,i.yg)("a",{parentName:"p",href:"https://reactnative.dev/docs/accessibility#accessibility-actions"},"accessibility action"),"."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"actionName"),"\u2014the name of the accessibility action ",(0,i.yg)("br",null)),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('scrollView')).performAccessibilityAction(\"activate\");\n")),(0,i.yg)("h2",{id:"deprecated-methods"},"Deprecated Methods"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#tapatpointpoint"},(0,i.yg)("inlineCode",{parentName:"a"},".tapAtPoint()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#pinchwithangledirection-speed-angle--ios-only"},(0,i.yg)("inlineCode",{parentName:"a"},".pinchWithAngle()"))," ",(0,i.yg)("strong",{parentName:"li"},"iOS only"))),(0,i.yg)("h3",{id:"tapatpointpoint"},(0,i.yg)("inlineCode",{parentName:"h3"},"tapAtPoint(point)")),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Deprecated:")," Use ",(0,i.yg)("a",{parentName:"p",href:"#tappoint"},(0,i.yg)("inlineCode",{parentName:"a"},".tap()"))," instead."),(0,i.yg)("p",null,"Simulates a tap at on the element at the specified point."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"point"),"\u2014a point in the element\u2019s coordinate space"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('tappable')).tapAtPoint({x:5, y:10});\n")),(0,i.yg)("h3",{id:"pinchwithangledirection-speed-angle--ios-only"},(0,i.yg)("inlineCode",{parentName:"h3"},"pinchWithAngle(direction, speed, angle)")," iOS only"),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Deprecated:")," Use ",(0,i.yg)("a",{parentName:"p",href:"#pinchscale-speed-angle--ios-only"},(0,i.yg)("inlineCode",{parentName:"a"},".pinch()"))," instead."),(0,i.yg)("p",null,"Simulates a pinch on the element with the provided options."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"direction"),"\u2014the direction of the pinch gesture (valid input: ",(0,i.yg)("inlineCode",{parentName:"p"},'"inward"'),"/",(0,i.yg)("inlineCode",{parentName:"p"},'"outward"'),") ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"speed"),"\u2014the speed of the pinch (optional, valid input: ",(0,i.yg)("inlineCode",{parentName:"p"},'"fast"'),"/",(0,i.yg)("inlineCode",{parentName:"p"},'"slow"')," , default is ",(0,i.yg)("inlineCode",{parentName:"p"},'"slow"'),") ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"angle"),"\u2014the angle of the pinch, in radians (optional, default is 0.0)"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('PinchableScrollView')).pinchWithAngle('outward', 'slow', 0);\n")))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/881ac13d.2f20ddd2.js b/assets/js/881ac13d.2f20ddd2.js new file mode 100644 index 0000000000..01ce7e6be0 --- /dev/null +++ b/assets/js/881ac13d.2f20ddd2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8768],{15680:(e,t,n)=>{n.d(t,{xA:()=>d,yg:()=>c});var a=n(96540);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=a.createContext({}),s=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},m="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},y=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,l=e.originalType,p=e.parentName,d=r(e,["components","mdxType","originalType","parentName"]),m=s(n),y=i,c=m["".concat(p,".").concat(y)]||m[y]||g[y]||l;return n?a.createElement(c,o(o({ref:t},d),{},{components:n})):a.createElement(c,o({ref:t},d))}));function c(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var l=n.length,o=new Array(l);o[0]=y;var r={};for(var p in t)hasOwnProperty.call(t,p)&&(r[p]=t[p]);r.originalType=e,r[m]="string"==typeof e?e:i,o[1]=r;for(var s=2;s{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>g,frontMatter:()=>l,metadata:()=>r,toc:()=>s});var a=n(58168),i=(n(96540),n(15680));const l={},o="Actions",r={unversionedId:"api/actions",id:"api/actions",title:"Actions",description:"Detox uses matchers to find UI elements in your app and actions to simulate user interaction with those elements.",source:"@site/../docs/api/actions.md",sourceDirName:"api",slug:"/api/actions",permalink:"/Detox/docs/next/api/actions",draft:!1,editUrl:"https://github.com/wix/Detox/edit/master/docs/../docs/api/actions.md",tags:[],version:"current",frontMatter:{},sidebar:"apiSidebar",previous:{title:"Matchers",permalink:"/Detox/docs/next/api/matchers"},next:{title:"Expect",permalink:"/Detox/docs/next/api/expect"}},p={},s=[{value:"Methods",id:"methods",level:2},{value:"tap(point)",id:"tappoint",level:3},{value:"multiTap(times)",id:"multitaptimes",level:3},{value:"longPress(duration)",id:"longpressduration",level:3},{value:"longPressAndDrag(duration, normalizedPositionX, normalizedPositionY, targetElement, normalizedTargetPositionX, normalizedTargetPositionY, speed, holdDuration)",id:"longpressanddragduration-normalizedpositionx-normalizedpositiony-targetelement-normalizedtargetpositionx-normalizedtargetpositiony-speed-holdduration",level:3},{value:"swipe(direction[, speed, normalizedOffset, normalizedStartingPointX, normalizedStartingPointY])",id:"swipedirection-speed-normalizedoffset-normalizedstartingpointx-normalizedstartingpointy",level:3},{value:"pinch(scale, speed, angle) iOS only",id:"pinchscale-speed-angle--ios-only",level:3},{value:"scrollToIndex(index) Android only",id:"scrolltoindexindex--android-only",level:3},{value:"scroll(offset, direction[, startPositionX, startPositionY])",id:"scrolloffset-direction-startpositionx-startpositiony",level:3},{value:"whileElement(element)",id:"whileelementelement",level:3},{value:"scrollTo(edge[, startPositionX, startPositionY])",id:"scrolltoedge-startpositionx-startpositiony",level:3},{value:"typeText(text)",id:"typetexttext",level:3},{value:"replaceText(text)",id:"replacetexttext",level:3},{value:"clearText()",id:"cleartext",level:3},{value:"tapReturnKey()",id:"tapreturnkey",level:3},{value:"tapBackspaceKey()",id:"tapbackspacekey",level:3},{value:"setColumnToValue(column, value) iOS only",id:"setcolumntovaluecolumn-value--ios-only",level:3},{value:"setDatePickerDate(dateString, dateFormat)",id:"setdatepickerdatedatestring-dateformat",level:3},{value:"adjustSliderToPosition(normalizedPosition)",id:"adjustslidertopositionnormalizedposition",level:3},{value:"getAttributes()",id:"getattributes",level:3},{value:"iOS-Only",id:"ios-only",level:4},{value:"Android-Only",id:"android-only",level:4},{value:"takeScreenshot(name)",id:"takescreenshotname",level:3},{value:"performAccessibilityAction(actionName)",id:"performaccessibilityactionactionname",level:3},{value:"Deprecated Methods",id:"deprecated-methods",level:2},{value:"tapAtPoint(point)",id:"tapatpointpoint",level:3},{value:"pinchWithAngle(direction, speed, angle) iOS only",id:"pinchwithangledirection-speed-angle--ios-only",level:3}],d={toc:s},m="wrapper";function g(e){let{components:t,...n}=e;return(0,i.yg)(m,(0,a.A)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.yg)("h1",{id:"actions"},"Actions"),(0,i.yg)("p",null,"Detox uses ",(0,i.yg)("a",{parentName:"p",href:"/Detox/docs/next/api/matchers"},"matchers")," to find UI elements in your app and actions to simulate user interaction with those elements."),(0,i.yg)("p",null,"Use ",(0,i.yg)("a",{parentName:"p",href:"/Detox/docs/next/api/expect"},"expectations")," to verify element states."),(0,i.yg)("h2",{id:"methods"},"Methods"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#tappoint"},(0,i.yg)("inlineCode",{parentName:"a"},".tap()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#multitaptimes"},(0,i.yg)("inlineCode",{parentName:"a"},".multiTap()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#longpressduration"},(0,i.yg)("inlineCode",{parentName:"a"},".longPress()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#longpressanddragduration-normalizedpositionx-normalizedpositiony-targetelement-normalizedtargetpositionx-normalizedtargetpositiony-speed-holdduration"},(0,i.yg)("inlineCode",{parentName:"a"},".longPressAndDrag()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#swipedirection-speed-normalizedoffset-normalizedstartingpointx-normalizedstartingpointy"},(0,i.yg)("inlineCode",{parentName:"a"},".swipe()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#pinchscale-speed-angle--ios-only"},(0,i.yg)("inlineCode",{parentName:"a"},".pinch()"))," ",(0,i.yg)("strong",{parentName:"li"},"iOS only")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#scrolltoindexindex--android-only"},(0,i.yg)("inlineCode",{parentName:"a"},".scrollToIndex()"))," ",(0,i.yg)("strong",{parentName:"li"},"Android only")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#scrolloffset-direction-startpositionx-startpositiony"},(0,i.yg)("inlineCode",{parentName:"a"},".scroll()")),(0,i.yg)("ul",{parentName:"li"},(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#whileelementelement"},(0,i.yg)("inlineCode",{parentName:"a"},"whileElement()"))))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#scrolltoedge"},(0,i.yg)("inlineCode",{parentName:"a"},".scrollTo()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#typetexttext"},(0,i.yg)("inlineCode",{parentName:"a"},".typeText()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#replacetexttext"},(0,i.yg)("inlineCode",{parentName:"a"},".replaceText()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#cleartext"},(0,i.yg)("inlineCode",{parentName:"a"},".clearText()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#tapreturnkey"},(0,i.yg)("inlineCode",{parentName:"a"},".tapReturnKey()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#tapbackspacekey"},(0,i.yg)("inlineCode",{parentName:"a"},".tapBackspaceKey()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#setcolumntovaluecolumn-value--ios-only"},(0,i.yg)("inlineCode",{parentName:"a"},".setColumnToValue()"))," ",(0,i.yg)("strong",{parentName:"li"},"iOS only")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#setdatepickerdatedatestring-dateformat"},(0,i.yg)("inlineCode",{parentName:"a"},".setDatePickerDate()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#adjustslidertopositionnormalizedposition"},(0,i.yg)("inlineCode",{parentName:"a"},".adjustSliderToPosition()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#getattributes"},(0,i.yg)("inlineCode",{parentName:"a"},".getAttributes()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#takescreenshotname"},(0,i.yg)("inlineCode",{parentName:"a"},".takeScreenshot(name)"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#performaccessibilityactionactionname"},(0,i.yg)("inlineCode",{parentName:"a"},".performAccessibilityAction()")))),(0,i.yg)("h3",{id:"tappoint"},(0,i.yg)("inlineCode",{parentName:"h3"},"tap(point)")),(0,i.yg)("p",null,"Simulates a tap on the element at the specified point, or at element\u2019s activation point if no point is specified."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"point"),"\u2014a point in the element\u2019s coordinate space (optional, valid input: object with x and y numerical values, default is ",(0,i.yg)("inlineCode",{parentName:"p"},"null"),")"),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Note:")," Special care should be applied when specifying a point with this method. Elements may have different dimensions when displayed on different device screen sizes, different text sizes, etc."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('tappable')).tap();\nawait element(by.id('tappable')).tap({x:5, y:10});\n")),(0,i.yg)("h3",{id:"multitaptimes"},(0,i.yg)("inlineCode",{parentName:"h3"},"multiTap(times)")),(0,i.yg)("p",null,"Simulates multiple taps on the element at its activation point. All taps are applied as a part of the same gesture and there is no synchronization attempt between taps."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"times"),"\u2014the number of taps to simulate (number, 1 and above)"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('tappable')).multiTap(3);\n")),(0,i.yg)("h3",{id:"longpressduration"},(0,i.yg)("inlineCode",{parentName:"h3"},"longPress(duration)")),(0,i.yg)("p",null,"Simulates a long press on the element at its activation point."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"duration")," (iOS only) \u2014 press during time, in milliseconds. Optional (default is 1000 ms)."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('tappable')).longPress();\nawait element(by.id('tappable')).longPress(1500);\n")),(0,i.yg)("h3",{id:"longpressanddragduration-normalizedpositionx-normalizedpositiony-targetelement-normalizedtargetpositionx-normalizedtargetpositiony-speed-holdduration"},(0,i.yg)("inlineCode",{parentName:"h3"},"longPressAndDrag(duration, normalizedPositionX, normalizedPositionY, targetElement, normalizedTargetPositionX, normalizedTargetPositionY, speed, holdDuration)")),(0,i.yg)("p",null,"Simulates a long press on the element and then drag it to a position of another element."),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"duration")," \u2014the duration to press for, in ms (required) ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"normalizedPositionX")," \u2014 X coordinate of the starting point, relative to the element width (required, a number between 0.0 and 1.0, ",(0,i.yg)("inlineCode",{parentName:"li"},"NaN")," \u2014 choose an optimal value automatically) ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"normalizedPositionY")," \u2014 Y coordinate of the starting point, relative to the element height (required, a number between 0.0 and 1.0, ",(0,i.yg)("inlineCode",{parentName:"li"},"NaN")," \u2014 choose an optimal value automatically) ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"targetElement"),"\u2014 the target element to drag to (required) ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"normalizedTargetPositionX")," \u2014 X coordinate of the ending point, relative to the target element width (optional, a number between 0.0 and 1.0, ",(0,i.yg)("inlineCode",{parentName:"li"},"NaN")," \u2014 choose an optimal value automatically) ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"normalizedTargetPositionY")," \u2014 Y coordinate of the ending point, relative to the target element height (optional, a number between 0.0 and 1.0, ",(0,i.yg)("inlineCode",{parentName:"li"},"NaN")," \u2014 choose an optimal value automatically) ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"speed")," \u2014 the speed of the drag (optional, valid input: ",(0,i.yg)("inlineCode",{parentName:"li"},'"fast"'),"/",(0,i.yg)("inlineCode",{parentName:"li"},'"slow"')," , default is ",(0,i.yg)("inlineCode",{parentName:"li"},'"fast"'),") ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"holdDuration")," \u2014 the duration before releasing at the end, in ms (optional, default is 1000)")),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('elementToDrag')).longPressAndDrag(2000, NaN, NaN, element(by.id('targetElement')), NaN, NaN);\nawait element(by.id('cellId_1')).longPressAndDrag(2000, 0.9, NaN, element(by.id('cellId_6')), 0.9, NaN, 'slow', 0);\n")),(0,i.yg)("h3",{id:"swipedirection-speed-normalizedoffset-normalizedstartingpointx-normalizedstartingpointy"},(0,i.yg)("inlineCode",{parentName:"h3"},"swipe(direction[, speed, normalizedOffset, normalizedStartingPointX, normalizedStartingPointY])")),(0,i.yg)("p",null,"Simulates a swipe on the element with the provided options."),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"direction")," \u2014 the direction of the swipe (required, valid input: ",(0,i.yg)("inlineCode",{parentName:"li"},'"left"'),"/",(0,i.yg)("inlineCode",{parentName:"li"},'"right"'),"/",(0,i.yg)("inlineCode",{parentName:"li"},'"up"'),"/",(0,i.yg)("inlineCode",{parentName:"li"},'"down"'),") ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"speed")," \u2014 the speed of the swipe (optional, valid input: ",(0,i.yg)("inlineCode",{parentName:"li"},'"fast"'),"/",(0,i.yg)("inlineCode",{parentName:"li"},'"slow"')," , default is ",(0,i.yg)("inlineCode",{parentName:"li"},'"fast"'),") ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"normalizedOffset")," \u2014 swipe amount relative to the screen width/height (optional, a number between 0.0 and 1.0, default is ",(0,i.yg)("inlineCode",{parentName:"li"},"NaN")," \u2014 choose an optimal value automatically) ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"normalizedStartingPointX")," \u2014 X coordinate of the swipe starting point, relative to the element width (optional, a number between 0.0 and 1.0, default is ",(0,i.yg)("inlineCode",{parentName:"li"},"NaN")," \u2014 choose an optimal value automatically) ",(0,i.yg)("br",null)),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"normalizedStartingPointY")," \u2014 Y coordinate of the swipe starting point, relative to the element height (optional, a number between 0.0 and 1.0, default is ",(0,i.yg)("inlineCode",{parentName:"li"},"NaN")," \u2014 choose an optimal value automatically)")),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('scrollView')).swipe('down');\nawait element(by.id('scrollView')).swipe('down', 'slow'); // set swipe speed\nawait element(by.id('scrollView')).swipe('down', 'fast', 0.75); // set swipe amount\nawait element(by.id('scrollView')).swipe('down', 'fast', NaN, 0.8); // set starting point X\nawait element(by.id('scrollView')).swipe('down', 'fast', NaN, NaN, 0.25); // set starting point Y\n")),(0,i.yg)("h3",{id:"pinchscale-speed-angle--ios-only"},(0,i.yg)("inlineCode",{parentName:"h3"},"pinch(scale, speed, angle)")," iOS only"),(0,i.yg)("p",null,"Simulates a pinch on the element with the provided options."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"scale"),"\u2014the scale of the pinch gesture; use a scale between 0 and 1 to zoom out, and a scale greater than 1 to zoom in; the system makes a best effort to accommodate the requested scale, taking into account the element\u2019s dimensions (valid input: (0.0, inf]) ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"speed"),"\u2014the speed of the pinch (optional, valid input: ",(0,i.yg)("inlineCode",{parentName:"p"},'"fast"'),"/",(0,i.yg)("inlineCode",{parentName:"p"},'"slow"')," , default is ",(0,i.yg)("inlineCode",{parentName:"p"},'"slow"'),") ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"angle"),"\u2014the angle of the pinch, in radians (optional, default is 0.0)"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('PinchableScrollView')).pinch(1.1); //Zooms in a little bit\nawait element(by.id('PinchableScrollView')).pinch(2.0); //Zooms in a lot\nawait element(by.id('PinchableScrollView')).pinch(0.001); //Zooms out a lot\n")),(0,i.yg)("h3",{id:"scrolltoindexindex--android-only"},(0,i.yg)("inlineCode",{parentName:"h3"},"scrollToIndex(index)")," Android only"),(0,i.yg)("p",null,"Scrolls until it reaches the element with the provided index. This works for ",(0,i.yg)("inlineCode",{parentName:"p"},"ReactScrollView")," and ",(0,i.yg)("inlineCode",{parentName:"p"},"ReactHorizontalScrollView"),"."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"index"),"\u2014the index of the target element ",(0,i.yg)("br",null)),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('scrollView')).scrollToIndex(0);\n")),(0,i.yg)("h3",{id:"scrolloffset-direction-startpositionx-startpositiony"},(0,i.yg)("inlineCode",{parentName:"h3"},"scroll(offset, direction[, startPositionX, startPositionY])")),(0,i.yg)("p",null,"Simulates a scroll on the element with the provided options."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"offset"),"\u2014the offset to scroll, in points ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"direction"),"\u2014the scroll\u2019s direction (valid input: ",(0,i.yg)("inlineCode",{parentName:"p"},'"left"'),"/",(0,i.yg)("inlineCode",{parentName:"p"},'"right"'),"/",(0,i.yg)("inlineCode",{parentName:"p"},'"up"'),"/",(0,i.yg)("inlineCode",{parentName:"p"},'"down"'),") ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"startPositionX"),"\u2014the normalized x percentage of the element to use as scroll start point (optional, valid input: ","[","0.0, 1.0], ",(0,i.yg)("inlineCode",{parentName:"p"},"NaN"),"\u2014choose an optimal value automatically, default is ",(0,i.yg)("inlineCode",{parentName:"p"},"NaN"),") ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"startPositionY"),"\u2014the normalized y percentage of the element to use as scroll start point (optional, valid input: ","[","0.0, 1.0], ",(0,i.yg)("inlineCode",{parentName:"p"},"NaN"),"\u2014choose an optimal value automatically, default is ",(0,i.yg)("inlineCode",{parentName:"p"},"NaN"),")"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('scrollView')).scroll(100, 'up');\nawait element(by.id('scrollView')).scroll(100, 'down', NaN, 0.85);\n")),(0,i.yg)("h3",{id:"whileelementelement"},(0,i.yg)("inlineCode",{parentName:"h3"},"whileElement(element)")),(0,i.yg)("p",null,"Continuously scrolls the scroll element until the specified expectation is resolved. If the edge of the scroll element is reached while the expectation is not resolved, the operation is failed."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await waitFor(element(by.text('Text5'))).toBeVisible().whileElement(by.id('ScrollView630')).scroll(50, 'down');\n")),(0,i.yg)("h3",{id:"scrolltoedge-startpositionx-startpositiony"},(0,i.yg)("inlineCode",{parentName:"h3"},"scrollTo(edge[, startPositionX, startPositionY])")),(0,i.yg)("p",null,"Simulates a scroll to the specified edge."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"edge"),"\u2014the edge to scroll to (valid input: ",(0,i.yg)("inlineCode",{parentName:"p"},'"left"'),"/",(0,i.yg)("inlineCode",{parentName:"p"},'"right"'),"/",(0,i.yg)("inlineCode",{parentName:"p"},'"top"'),"/",(0,i.yg)("inlineCode",{parentName:"p"},'"bottom"'),") ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"startPositionX"),"\u2014the normalized x percentage of the element to use as scroll start point (optional, valid input: ","[","0.0, 1.0], ",(0,i.yg)("inlineCode",{parentName:"p"},"NaN"),"\u2014choose an optimal value automatically, default is ",(0,i.yg)("inlineCode",{parentName:"p"},"NaN"),") ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"startPositionY"),"\u2014the normalized y percentage of the element to use as scroll start point (optional, valid input: ","[","0.0, 1.0], ",(0,i.yg)("inlineCode",{parentName:"p"},"NaN"),"\u2014choose an optimal value automatically, default is ",(0,i.yg)("inlineCode",{parentName:"p"},"NaN"),")"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('scrollView')).scrollTo('bottom');\nawait element(by.id('scrollView')).scrollTo('top', NaN, 0.2);\n")),(0,i.yg)("h3",{id:"typetexttext"},(0,i.yg)("inlineCode",{parentName:"h3"},"typeText(text)")),(0,i.yg)("p",null,"Simulates typing of the specified text into the element, using the system\u2019s builtin keyboard and typing behavior."),(0,i.yg)("p",null,"On iOS, any element can be typed into, as long as it can become first responder and conforms to the ",(0,i.yg)("a",{parentName:"p",href:"https://developer.apple.com/documentation/uikit/uitextinput"},(0,i.yg)("inlineCode",{parentName:"a"},"UITextInput"))," protocol. Before typing the text, Detox attempts making the element the first responder, if it isn\u2019t already. If the element\u2019s window is not key window, Detox attempts making it the key window."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"text"),"\u2014the text to type (valid input: string)"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('textField')).typeText('passcode');\n")),(0,i.yg)("h3",{id:"replacetexttext"},(0,i.yg)("inlineCode",{parentName:"h3"},"replaceText(text)")),(0,i.yg)("p",null,"Replaces the element\u2019s text with the specified text, without using the system\u2019s builtin keyboard or typing behavior. ",(0,i.yg)("strong",{parentName:"p"},"Note"),", that using this method is faster than using ",(0,i.yg)("a",{parentName:"p",href:"#typetexttext"},(0,i.yg)("inlineCode",{parentName:"a"},".typeText()")),", but may not trigger all text input callbacks, causing an undefined state in your app."),(0,i.yg)("p",null,"On iOS, any element\u2019s text can be replaced, as long as it can become first responder and conforms to the ",(0,i.yg)("a",{parentName:"p",href:"https://developer.apple.com/documentation/uikit/uitextinput"},(0,i.yg)("inlineCode",{parentName:"a"},"UITextInput"))," protocol. Before replacing the text, Detox attempts making the element the first responder, if it isn\u2019t already. If the element\u2019s window is not key window, Detox attempts making it the key window."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"text"),"\u2014the text to replace with (valid input: string)"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('textField')).replaceText('passcode again');\n")),(0,i.yg)("h3",{id:"cleartext"},(0,i.yg)("inlineCode",{parentName:"h3"},"clearText()")),(0,i.yg)("p",null,"Simulates clearing the text of the element, using the system\u2019s builtin keyboard and typing behavior."),(0,i.yg)("p",null,"On iOS, any element\u2019s text can be cleared, as long as it can become first responder and conforms to the ",(0,i.yg)("a",{parentName:"p",href:"https://developer.apple.com/documentation/uikit/uitextinput"},(0,i.yg)("inlineCode",{parentName:"a"},"UITextInput"))," protocol. Before clearing the text, Detox attempts making the element the first responder, if it isn\u2019t already. If the element\u2019s window is not key window, Detox attempts making it the key window."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('textField')).clearText();\n")),(0,i.yg)("h3",{id:"tapreturnkey"},(0,i.yg)("inlineCode",{parentName:"h3"},"tapReturnKey()")),(0,i.yg)("p",null,"Simulates tapping on the return key into the element, using the system\u2019s builtin keyboard and typing behavior."),(0,i.yg)("p",null,"On iOS, any element can be sent return key input, as long as it can become first responder and conforms to the ",(0,i.yg)("a",{parentName:"p",href:"https://developer.apple.com/documentation/uikit/uitextinput"},(0,i.yg)("inlineCode",{parentName:"a"},"UITextInput"))," protocol. Before tapping on the return key, Detox attempts making the element the first responder, if it isn\u2019t already. If the element\u2019s window is not key window, Detox attempts making it the key window."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('textField')).tapReturnKey();\n")),(0,i.yg)("h3",{id:"tapbackspacekey"},(0,i.yg)("inlineCode",{parentName:"h3"},"tapBackspaceKey()")),(0,i.yg)("p",null,"Simulates tapping of the backspace key into the element, using the system\u2019s builtin keyboard and typing behavior."),(0,i.yg)("p",null,"On iOS, any element can be sent backspace key input, as long as it can become first responder and conforms to the ",(0,i.yg)("a",{parentName:"p",href:"https://developer.apple.com/documentation/uikit/uitextinput"},(0,i.yg)("inlineCode",{parentName:"a"},"UITextInput"))," protocol. Before tapping on the backspace key, Detox attempts making the element the first responder, if it isn\u2019t already. If the element\u2019s window is not key window, Detox attempts making it the key window."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('textField')).tapBackspaceKey();\n")),(0,i.yg)("h3",{id:"setcolumntovaluecolumn-value--ios-only"},(0,i.yg)("inlineCode",{parentName:"h3"},"setColumnToValue(column, value)")," iOS only"),(0,i.yg)("p",null,"Sets the element\u2019s specified column to the specified value, using the system\u2019s picker view APIs."),(0,i.yg)("p",null,"Values accepted by this method are strings only, and the system will do its best to match complex picker view cells to the string."),(0,i.yg)("p",null,"This function does not support date pickers. Use ",(0,i.yg)("a",{parentName:"p",href:"#setdatepickerdatedatestring-dateformat"},(0,i.yg)("inlineCode",{parentName:"a"},".setDatePickerDate()"))," instead."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"column"),"\u2014the element\u2019s column to set (valid input: number, 0 and above) ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"value"),"\u2014the string value to set (valid input: string)"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('pickerView')).setColumnToValue(1, \"6\");\nawait element(by.id('pickerView')).setColumnToValue(2, \"Hello World\");\n")),(0,i.yg)("blockquote",null,(0,i.yg)("p",{parentName:"blockquote"},(0,i.yg)("strong",{parentName:"p"},"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 ",(0,i.yg)("a",{parentName:"p",href:"/Detox/docs/next/api/device#9-languageandlocalelaunch-with-a-specific-language-andor-local-ios-only"},"here")," for more information.")),(0,i.yg)("h3",{id:"setdatepickerdatedatestring-dateformat"},(0,i.yg)("inlineCode",{parentName:"h3"},"setDatePickerDate(dateString, dateFormat)")),(0,i.yg)("p",null,"Sets the date-picker\u2019s date to the specified date and time."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"dateString"),"\u2014The date to set. Should match the format provided by ",(0,i.yg)("inlineCode",{parentName:"p"},"dateFormat"),".",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"dateFormat"),"\u2014The format of ",(0,i.yg)("inlineCode",{parentName:"p"},"dateString"),". Should be either ",(0,i.yg)("a",{parentName:"p",href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString"},(0,i.yg)("inlineCode",{parentName:"a"},"'ISO8601'")),", or an explicit date representation format, as supported by ",(0,i.yg)("a",{parentName:"p",href:"https://developer.apple.com/documentation/foundation/dateformatter"},(0,i.yg)("inlineCode",{parentName:"a"},"NSDateFormatter"))," on iOS / ",(0,i.yg)("a",{parentName:"p",href:"https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html"},(0,i.yg)("inlineCode",{parentName:"a"},"DateTimeFormatter"))," on Android (e.g. ",(0,i.yg)("inlineCode",{parentName:"p"},"'yyyy/MM/dd'"),")."),(0,i.yg)("blockquote",null,(0,i.yg)("p",{parentName:"blockquote"},(0,i.yg)("em",{parentName:"p"},"The recommended ",(0,i.yg)("inlineCode",{parentName:"em"},"dateFormat")," is ",(0,i.yg)("inlineCode",{parentName:"em"},"ISO8601"),"."))),(0,i.yg)("p",null,"Examples:"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"const datePicker = element(by.id('datePicker'));\n\n// ISO8601:\nawait datePicker.setDatePickerDate('2019-02-06T05:10:00-08:00', 'ISO8601');\nawait datePicker.setDatePickerDate(new Date().toISOString(), 'ISO8601'); // toISOString returns an ISO8601 format with no timezone (UTC-0)\n\n// Explicit format:\nawait datePicker.setDatePickerDate('2019/02/06', \"yyyy/MM/dd\");\n")),(0,i.yg)("admonition",{type:"info"},(0,i.yg)("p",{parentName:"admonition"},"As far as element-matching is concerned, on Android, older versions of the popular ",(0,i.yg)("a",{parentName:"p",href:"https://www.npmjs.com/package/@react-native-community/datetimepicker"},(0,i.yg)("inlineCode",{parentName:"a"},"@react-native-community/datetimepicker"))," package don\u2019t allow for the specification of your own ",(0,i.yg)("a",{parentName:"p",href:"/Detox/docs/next/guide/test-id"},(0,i.yg)("inlineCode",{parentName:"a"},"testID"))," prop for the date-picker component. Therefore, you'd have to either upgrade your package to a newer version containing ",(0,i.yg)("a",{parentName:"p",href:"https://github.com/react-native-datetimepicker/datetimepicker/pull/705"},"PR datetimepicker#705")," inside, or use Detox's ",(0,i.yg)("a",{parentName:"p",href:"/Detox/docs/next/api/matchers#bytypeclassname"},(0,i.yg)("inlineCode",{parentName:"a"},"by.type"))," matcher as a workaround. For example:"),(0,i.yg)("pre",{parentName:"admonition"},(0,i.yg)("code",{parentName:"pre",className:"language-js"},"const datePicker = device.getPlatform() === 'android'\n ? element(by.type('android.widget.DatePicker'))\n : element(by.id('datePicker'));\n"))),(0,i.yg)("h3",{id:"adjustslidertopositionnormalizedposition"},(0,i.yg)("inlineCode",{parentName:"h3"},"adjustSliderToPosition(normalizedPosition)")),(0,i.yg)("p",null,"Manipulates the UI to change the displayed value of the slider element to a new value, based on a normalized position."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"normalizedPosition"),"\u2014The normalized position to adjust the slider element. (valid input: ","[","0, 1], 0 corresponds to the minimum value of the slider, and 1 corresponds to the maximum value)"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('slider')).adjustSliderToPosition(0.75);\n")),(0,i.yg)("h3",{id:"getattributes"},(0,i.yg)("inlineCode",{parentName:"h3"},"getAttributes()")),(0,i.yg)("p",null,"Returns an object, representing various attributes of the element."),(0,i.yg)("p",null,"Retrieved attributes are:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"text"),": The text value of any textual element."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"label"),": The label of the element. Matches ",(0,i.yg)("inlineCode",{parentName:"li"},"accessibilityLabel")," for iOS, and ",(0,i.yg)("inlineCode",{parentName:"li"},"contentDescription")," for android. Refer to the ",(0,i.yg)("a",{parentName:"li",href:"/Detox/docs/next/api/expect#tohavelabellabel"},(0,i.yg)("inlineCode",{parentName:"a"},".toHaveLabel()")," API")," in order to learn about caveats associated with this attribute in React Native apps."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"placeholder"),": The placeholder text value of the element. Matches ",(0,i.yg)("inlineCode",{parentName:"li"},"hint")," on android."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"enabled"),": Whether the element is enabled for user interaction."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"identifier"),": The identifier of the element. Matches ",(0,i.yg)("inlineCode",{parentName:"li"},"accessibilityIdentifier")," on iOS, and the main view tag, on Android - both commonly ",(0,i.yg)("strong",{parentName:"li"},"holding the component\u2019s test ID in React Native apps"),"."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"visible"),": Whether the element is visible. On iOS, visibility is calculated for the ",(0,i.yg)("a",{parentName:"li",href:"https://developer.apple.com/documentation/objectivec/nsobject/1615179-accessibilityactivationpoint"},"activation point"),". On Android, the attribute directly holds the value returned by ",(0,i.yg)("a",{parentName:"li",href:"https://developer.android.com/reference/kotlin/android/view/View#getglobalvisiblerect"},"View.getLocalVisibleRect()"),")."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"value"),": The value of the element, where applicable. For example: the position of a slider, or whether a checkbox has been marked. Matches ",(0,i.yg)("inlineCode",{parentName:"li"},"accessibilityValue"),", on iOS."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"frame"),": The frame of the element, in screen coordinate space.")),(0,i.yg)("h4",{id:"ios-only"},"iOS-Only"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"activationPoint"),": The ",(0,i.yg)("a",{parentName:"li",href:"https://developer.apple.com/documentation/objectivec/nsobject/1615179-accessibilityactivationpoint"},"activation point")," of the element, in element coordinate space."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"normalizedActivationPoint"),": The activation point of the element, in normalized percentage (","[","0.0, 1.0])."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"hittable"),": Whether the element is hittable at the activation point."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"elementFrame"),": The frame of the element, in container coordinate space."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"elementBounds"),": The bounds of the element, in element coordinate space."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"safeAreaInsets"),": The safe area insets of the element, in element coordinate space."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"elementSafeBounds"),": The safe area bounds of the element, in element coordinate space."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"date"),": The date of the element (in case the element is a date picker)."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"normalizedSliderPosition"),": The normalized slider position (in case the element is a slider)."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"contentOffset"),": The content offset (in case the element is a scroll view)."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"contentInset"),": The content inset (in case the element is a scroll view)."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"adjustedContentInset"),": The adjusted content inset (in case the element is a scroll view).")),(0,i.yg)("h4",{id:"android-only"},"Android-Only"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"visibility"),": The OS visibility type associated with the element: ",(0,i.yg)("inlineCode",{parentName:"li"},"visible"),", ",(0,i.yg)("inlineCode",{parentName:"li"},"invisible")," or ",(0,i.yg)("inlineCode",{parentName:"li"},"gone"),"."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"width"),": Width of the element, in pixels (deprecated)."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"height"),": Height of the element, in pixels (deprecated)."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"elevation"),": Elevation of the element."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"alpha"),": Alpha value for the element."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"focused"),": Whether the element is the one currently in focus."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"textSize"),": The text size for the text element."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"length"),": The length of the text element (character count).")),(0,i.yg)("p",null,"If the value for a given attribute is null or cannot be otherwise computed, the key will not be present, but empty strings may be found in the object."),(0,i.yg)("p",null,"If the query matches multiple elements, the attributes of all matched elements is returned as an array of objects under the ",(0,i.yg)("inlineCode",{parentName:"p"},"elements")," key."),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"// import jestExpect from 'expect';\nconst jestExpect = require('expect').default;\n\n// ...\nconst attributes = await element(by.text('Tap Me')).getAttributes();\njestExpect(attributes.text).toBe('Tap Me');\n\nconst multipleMatchedElements = await element(by.text('Multiple')).getAttributes();\njestExpect(multipleMatchedElements.elements.length).toBe(5);\njestExpect(multipleMatchedElements.elements[0].identifier).toBe('FirstElement');\n")),(0,i.yg)("h3",{id:"takescreenshotname"},(0,i.yg)("inlineCode",{parentName:"h3"},"takeScreenshot(name)")),(0,i.yg)("p",null,"Takes a screenshot of the matched element. For full details on taking screenshots with Detox, refer to the ",(0,i.yg)("a",{parentName:"p",href:"/Detox/docs/next/guide/taking-screenshots"},"screenshots guide"),"."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"name"),"\u2014the name of the screenshot"),(0,i.yg)("h3",{id:"performaccessibilityactionactionname"},(0,i.yg)("inlineCode",{parentName:"h3"},"performAccessibilityAction(actionName)")),(0,i.yg)("p",null,"Triggers an ",(0,i.yg)("a",{parentName:"p",href:"https://reactnative.dev/docs/accessibility#accessibility-actions"},"accessibility action"),"."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"actionName"),"\u2014the name of the accessibility action ",(0,i.yg)("br",null)),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('scrollView')).performAccessibilityAction(\"activate\");\n")),(0,i.yg)("h2",{id:"deprecated-methods"},"Deprecated Methods"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#tapatpointpoint"},(0,i.yg)("inlineCode",{parentName:"a"},".tapAtPoint()"))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("a",{parentName:"li",href:"#pinchwithangledirection-speed-angle--ios-only"},(0,i.yg)("inlineCode",{parentName:"a"},".pinchWithAngle()"))," ",(0,i.yg)("strong",{parentName:"li"},"iOS only"))),(0,i.yg)("h3",{id:"tapatpointpoint"},(0,i.yg)("inlineCode",{parentName:"h3"},"tapAtPoint(point)")),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Deprecated:")," Use ",(0,i.yg)("a",{parentName:"p",href:"#tappoint"},(0,i.yg)("inlineCode",{parentName:"a"},".tap()"))," instead."),(0,i.yg)("p",null,"Simulates a tap at on the element at the specified point."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"point"),"\u2014a point in the element\u2019s coordinate space"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('tappable')).tapAtPoint({x:5, y:10});\n")),(0,i.yg)("h3",{id:"pinchwithangledirection-speed-angle--ios-only"},(0,i.yg)("inlineCode",{parentName:"h3"},"pinchWithAngle(direction, speed, angle)")," iOS only"),(0,i.yg)("p",null,(0,i.yg)("strong",{parentName:"p"},"Deprecated:")," Use ",(0,i.yg)("a",{parentName:"p",href:"#pinchscale-speed-angle--ios-only"},(0,i.yg)("inlineCode",{parentName:"a"},".pinch()"))," instead."),(0,i.yg)("p",null,"Simulates a pinch on the element with the provided options."),(0,i.yg)("p",null,(0,i.yg)("inlineCode",{parentName:"p"},"direction"),"\u2014the direction of the pinch gesture (valid input: ",(0,i.yg)("inlineCode",{parentName:"p"},'"inward"'),"/",(0,i.yg)("inlineCode",{parentName:"p"},'"outward"'),") ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"speed"),"\u2014the speed of the pinch (optional, valid input: ",(0,i.yg)("inlineCode",{parentName:"p"},'"fast"'),"/",(0,i.yg)("inlineCode",{parentName:"p"},'"slow"')," , default is ",(0,i.yg)("inlineCode",{parentName:"p"},'"slow"'),") ",(0,i.yg)("br",null),"\n",(0,i.yg)("inlineCode",{parentName:"p"},"angle"),"\u2014the angle of the pinch, in radians (optional, default is 0.0)"),(0,i.yg)("pre",null,(0,i.yg)("code",{parentName:"pre",className:"language-js"},"await element(by.id('PinchableScrollView')).pinchWithAngle('outward', 'slow', 0);\n")))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.461bae48.js b/assets/js/runtime~main.44c298c3.js similarity index 82% rename from assets/js/runtime~main.461bae48.js rename to assets/js/runtime~main.44c298c3.js index a81b81ff12..5f7b911435 100644 --- a/assets/js/runtime~main.461bae48.js +++ b/assets/js/runtime~main.44c298c3.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,d,c,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=b,e=[],r.O=(a,f,d,c)=>{if(!f){var b=1/0;for(i=0;i=c)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[f,d,c]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var c=Object.create(null);r.r(c);var b={};a=a||[null,f({}),f([]),f(f)];for(var t=2&d&&e;"object"==typeof t&&!~a.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(c,b),c},r.d=(e,a)=>{for(var f in a)r.o(a,f)&&!r.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,f)=>(r.f[f](e,a),a)),[])),r.u=e=>"assets/js/"+({2:"18fc5556",53:"fe23c957",68:"268dddcf",96:"121cced5",99:"0a2b2829",123:"3bc305d8",178:"861bdbb6",187:"45e366b7",235:"85c7de33",289:"9a6ca8b8",298:"a4761f6f",323:"cb38042d",332:"e6cdcb35",347:"6fb4057b",456:"e9d07a0a",577:"d9894068",612:"b1c3f2c7",641:"86a9c212",643:"20110cf9",656:"d8b689b0",682:"1373a77b",708:"9509e94f",770:"df0b489b",868:"d0f64c9c",1079:"1c545b73",1138:"96997528",1211:"26368098",1218:"5bc90040",1274:"f02f7df4",1513:"8ab53c77",1533:"9a34b858",1539:"3fb5a56d",1581:"328083ea",1700:"fc9f0a8f",1707:"f431fa1f",1839:"66491fb6",1874:"5fc994c2",1987:"ecfe08ed",1998:"5133b137",2043:"4e8770ad",2083:"3d4c33f6",2120:"2dcc617a",2124:"0d1d5dba",2138:"1a4e3797",2141:"933bed1e",2154:"9017a355",2247:"af67069a",2269:"3f859f05",2270:"c62bfd53",2338:"7b8d824d",2373:"7a99341f",2377:"38bf2aac",2419:"9eb50243",2438:"4afa4b8a",2459:"649c4fa3",2460:"37fdb427",2496:"85addd09",2525:"d350cff3",2581:"dc701447",2634:"c4f5d8e4",2698:"373c35af",2707:"c50db514",2711:"9e4087bc",2905:"ddab1e1f",2920:"398b3246",2965:"3e7ee0fc",3010:"a55aca30",3015:"0e97a833",3022:"e6bddadc",3103:"f2f4b8a7",3119:"f14c3b1d",3134:"e432d2f9",3150:"090a441b",3182:"6e1398c4",3206:"74a579df",3249:"ccc49370",3360:"c12557ec",3372:"b49de2ad",3379:"f97fefc4",3392:"0ef19a76",3414:"04d1378b",3421:"bab8a798",3486:"cae448e5",3559:"4898f926",3671:"3f3efe2b",3818:"7358fe14",3833:"c262e01e",3890:"06556991",3892:"24602229",3894:"120e2fab",3995:"beec6c9a",4034:"fa42474c",4078:"e8bfc54f",4099:"bc243f9c",4122:"c8447d5b",4196:"f9078c13",4203:"9338ecde",4216:"50214cd4",4261:"66c89031",4324:"9b67fd78",4368:"ef7da448",4480:"4d2064e8",4511:"a6860cb2",4557:"c74a7097",4651:"040764b7",4778:"a622d695",4813:"6875c492",4871:"85a74db3",4879:"00424e3f",4930:"3f50474f",5104:"2ec4e639",5110:"ddb15f76",5210:"4a184f52",5235:"b48043f7",5333:"743699a6",5351:"df5bc064",5403:"684e0aea",5458:"5125c427",5465:"d389a7b2",5484:"30a967f3",5564:"5fcf77d7",5599:"3abc4359",5763:"851303a1",5844:"329947da",5928:"ae694851",5992:"3c59129e",6002:"6781c826",6044:"cd796466",6101:"750255a9",6104:"8e7c33d6",6388:"c7632c1f",6417:"79ac7843",6461:"c83bcda6",6527:"32a9b7bf",6618:"a8a1de49",6643:"289d965c",6646:"e453af6e",6769:"1a01fdf1",6887:"19ee85cd",6913:"41e12717",6938:"b80a1ac9",6941:"f98b7248",6990:"8f43d633",7024:"0f6ee85b",7056:"40113ee6",7109:"54c48e38",7126:"5e26652b",7153:"6af18994",7243:"5a9cd6fb",7308:"48c4a2a0",7321:"23a61782",7360:"af952e90",7367:"ea7b1b31",7433:"a32fb7f5",7472:"814f3328",7473:"7accbb75",7529:"90ca9965",7577:"5b12c1a9",7583:"af558054",7606:"9f23071e",7608:"2d84255a",7619:"478bcf42",7643:"a6aa9e1f",7696:"3974811d",7714:"170ab94c",7715:"0b72a6ff",7742:"dcfd3b61",7746:"7dcc0419",7761:"ba1e31c2",7813:"656a21b7",7839:"7d2f6bd9",7846:"dd5377a3",7886:"865d1447",7899:"5bfbde57",7900:"4c76b531",7924:"0a02aff3",8160:"2aa9b0dd",8209:"01a85c17",8221:"40e30cb7",8245:"d9683343",8271:"b9d5de69",8401:"17896441",8455:"eb35abdd",8460:"fc323215",8476:"f6b2bbb1",8519:"7c823085",8560:"0970ca0c",8581:"935f2afb",8620:"1c323773",8634:"b6072cb9",8641:"3498d2db",8758:"f164116d",8768:"881ac13d",8795:"e237dedf",8839:"ea9c95e7",8877:"dbe4f0b7",8881:"3b089002",8952:"2cf03b61",9034:"9292650b",9118:"63371bf1",9120:"df8c2417",9304:"04c33c1d",9342:"7c97e9a2",9437:"17f9232f",9515:"5d2f6d16",9543:"4aba33e7",9582:"80f9953e",9585:"0b851b4d",9591:"1d245f66",9592:"5eff386f",9679:"239f6efa",9685:"181d712d",9812:"f999fa4a",9966:"0c7edd3c"}[e]||e)+"."+{2:"3373b9bf",53:"643705c4",68:"c7e2bc4c",96:"faf569c2",99:"edd83f34",123:"1b9fa380",178:"280b9b1f",187:"f3d8b74a",235:"10138825",289:"4abf637f",298:"58d2a99b",323:"ee0f3976",332:"51e9bf3e",347:"7f4ce9c1",416:"05118c27",456:"093d089d",577:"be77af72",612:"a166cb62",641:"0bfe854a",643:"45b79a13",656:"e52bc8b4",682:"66d33fde",708:"db909afe",770:"901aae8b",868:"f2dd0f12",1079:"7080559a",1138:"824b22b0",1211:"9b939b14",1218:"3319e33f",1274:"35244da2",1513:"2c82f68a",1533:"fca19837",1539:"ae853ff9",1581:"4195c41d",1700:"f157ac87",1707:"c9fbdd0f",1774:"ad427177",1839:"dfefe3ec",1874:"db0a4081",1987:"5b8550eb",1998:"bb9f1657",2043:"4b08afc9",2083:"9720322e",2120:"c378e6a7",2124:"de224e29",2138:"be49f7cc",2141:"909642c9",2154:"da472e58",2247:"de7dd6c3",2269:"a45011d9",2270:"71c74cf9",2338:"54e2cd25",2373:"8afe65d7",2377:"1798461c",2419:"046f7024",2438:"957fafc1",2459:"890822eb",2460:"63453c8d",2496:"7e4d3165",2525:"59945079",2581:"1981e939",2634:"afb69bab",2698:"2bc80b37",2707:"dae9d9d6",2711:"7d8069cb",2905:"6b019ced",2920:"0ae10d4e",2965:"76402353",3010:"fcb1dac4",3015:"c5b175f4",3022:"96a9572e",3103:"b3494d59",3119:"f5799d4a",3134:"c320ce7a",3150:"31216255",3182:"e872148c",3206:"f70d2090",3249:"05697243",3282:"f514eeda",3360:"b7fe54da",3372:"c76e1161",3379:"e3efaf98",3392:"30233b6b",3414:"8a59078e",3421:"919e88ab",3486:"7155715f",3559:"e797962c",3671:"c422c4ff",3818:"c5c72ae2",3833:"96f6bd4c",3890:"a1e9bc3d",3892:"df277861",3894:"7118bdad",3995:"25a3fcd8",4034:"6e02f4ab",4078:"65e44e04",4098:"2ce64e20",4099:"56c58255",4122:"611092dd",4196:"8bb50cb6",4203:"f17ba905",4216:"f1fa5def",4261:"039d9b7e",4324:"cb3ef21a",4368:"7a1707f4",4480:"67192b50",4511:"7596329b",4557:"4e05340b",4651:"0dcb9382",4778:"7739c121",4813:"858bb418",4871:"82fed3b6",4879:"f648c4cc",4930:"ee7974c5",5104:"7d2d644b",5110:"58b49f3b",5210:"43ddf441",5235:"66b0d9a6",5333:"2ce8bcd4",5351:"70a63a4b",5403:"88c0edac",5458:"1e49bd17",5465:"c1a5338d",5484:"916290d1",5564:"fdb2b03a",5599:"feb62006",5763:"f3023de0",5844:"39651f20",5928:"e7b6bff9",5992:"9e140e08",6002:"a55b3bbe",6044:"6f6a7f64",6101:"16c7c282",6104:"7bedeeb2",6388:"2afcabcc",6417:"6b5cfd35",6461:"298241f0",6527:"c4082127",6618:"e217f8eb",6643:"6c9f1bae",6646:"9a120b1c",6769:"9d3b496e",6887:"de5f9600",6913:"b3eed543",6938:"175f49b8",6941:"b9946c6e",6990:"4e452f8b",7024:"1df905a6",7056:"4c3565bb",7109:"21d7a131",7126:"3803ef1b",7153:"ef523078",7243:"a96191eb",7308:"6a4ec96e",7321:"a142122a",7360:"0cb4ee98",7367:"e673a4c0",7433:"d358ef91",7472:"1e97cc47",7473:"9e9897ae",7529:"873b7d50",7577:"05962f98",7583:"47599a5e",7606:"bcb666eb",7608:"5aa43b26",7619:"6e16aad9",7643:"ceda7075",7696:"a36dbbbc",7714:"1a5f4bec",7715:"47b7048e",7742:"e2bbc433",7746:"da942ed4",7761:"866bd94c",7813:"0071775d",7839:"67784972",7846:"2356992f",7886:"b3619613",7899:"4495bcb5",7900:"4c2ae5f9",7924:"86b8b3eb",8160:"1635a405",8209:"462c7200",8221:"4b9fad05",8245:"6305ce29",8271:"5e1e4d58",8382:"bc645a9c",8401:"ab9f7aa1",8455:"e26bbdf6",8460:"bc04a210",8476:"0a7de365",8519:"773348c9",8560:"d824ac45",8581:"166b5870",8620:"7389ae93",8634:"f1f6f143",8641:"45e762a4",8758:"ea9aecd2",8768:"2ab7acd9",8795:"1aee74c9",8839:"5ccb20b4",8877:"9ecfb22b",8881:"012e62b4",8913:"3eea0e0d",8952:"fc494d15",9034:"2e9752e5",9118:"a72526cb",9120:"6321b9e1",9304:"693e72fc",9342:"d7be4740",9437:"54824781",9462:"04a908b6",9515:"719d5572",9543:"2f0398d6",9551:"0760c9a4",9582:"f682bd67",9585:"6283e682",9591:"8fba063b",9592:"ed6cb595",9679:"b088b627",9685:"9d37d632",9812:"1e75f82d",9966:"6773f7e6"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},c="website:",r.l=(e,a,f,b)=>{if(d[e])d[e].push(a);else{var t,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var c=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),c&&c.forEach((e=>e(f))),a)return a(f)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/Detox/",r.gca=function(e){return e={17896441:"8401",24602229:"3892",26368098:"1211",96997528:"1138","18fc5556":"2",fe23c957:"53","268dddcf":"68","121cced5":"96","0a2b2829":"99","3bc305d8":"123","861bdbb6":"178","45e366b7":"187","85c7de33":"235","9a6ca8b8":"289",a4761f6f:"298",cb38042d:"323",e6cdcb35:"332","6fb4057b":"347",e9d07a0a:"456",d9894068:"577",b1c3f2c7:"612","86a9c212":"641","20110cf9":"643",d8b689b0:"656","1373a77b":"682","9509e94f":"708",df0b489b:"770",d0f64c9c:"868","1c545b73":"1079","5bc90040":"1218",f02f7df4:"1274","8ab53c77":"1513","9a34b858":"1533","3fb5a56d":"1539","328083ea":"1581",fc9f0a8f:"1700",f431fa1f:"1707","66491fb6":"1839","5fc994c2":"1874",ecfe08ed:"1987","5133b137":"1998","4e8770ad":"2043","3d4c33f6":"2083","2dcc617a":"2120","0d1d5dba":"2124","1a4e3797":"2138","933bed1e":"2141","9017a355":"2154",af67069a:"2247","3f859f05":"2269",c62bfd53:"2270","7b8d824d":"2338","7a99341f":"2373","38bf2aac":"2377","9eb50243":"2419","4afa4b8a":"2438","649c4fa3":"2459","37fdb427":"2460","85addd09":"2496",d350cff3:"2525",dc701447:"2581",c4f5d8e4:"2634","373c35af":"2698",c50db514:"2707","9e4087bc":"2711",ddab1e1f:"2905","398b3246":"2920","3e7ee0fc":"2965",a55aca30:"3010","0e97a833":"3015",e6bddadc:"3022",f2f4b8a7:"3103",f14c3b1d:"3119",e432d2f9:"3134","090a441b":"3150","6e1398c4":"3182","74a579df":"3206",ccc49370:"3249",c12557ec:"3360",b49de2ad:"3372",f97fefc4:"3379","0ef19a76":"3392","04d1378b":"3414",bab8a798:"3421",cae448e5:"3486","4898f926":"3559","3f3efe2b":"3671","7358fe14":"3818",c262e01e:"3833","06556991":"3890","120e2fab":"3894",beec6c9a:"3995",fa42474c:"4034",e8bfc54f:"4078",bc243f9c:"4099",c8447d5b:"4122",f9078c13:"4196","9338ecde":"4203","50214cd4":"4216","66c89031":"4261","9b67fd78":"4324",ef7da448:"4368","4d2064e8":"4480",a6860cb2:"4511",c74a7097:"4557","040764b7":"4651",a622d695:"4778","6875c492":"4813","85a74db3":"4871","00424e3f":"4879","3f50474f":"4930","2ec4e639":"5104",ddb15f76:"5110","4a184f52":"5210",b48043f7:"5235","743699a6":"5333",df5bc064:"5351","684e0aea":"5403","5125c427":"5458",d389a7b2:"5465","30a967f3":"5484","5fcf77d7":"5564","3abc4359":"5599","851303a1":"5763","329947da":"5844",ae694851:"5928","3c59129e":"5992","6781c826":"6002",cd796466:"6044","750255a9":"6101","8e7c33d6":"6104",c7632c1f:"6388","79ac7843":"6417",c83bcda6:"6461","32a9b7bf":"6527",a8a1de49:"6618","289d965c":"6643",e453af6e:"6646","1a01fdf1":"6769","19ee85cd":"6887","41e12717":"6913",b80a1ac9:"6938",f98b7248:"6941","8f43d633":"6990","0f6ee85b":"7024","40113ee6":"7056","54c48e38":"7109","5e26652b":"7126","6af18994":"7153","5a9cd6fb":"7243","48c4a2a0":"7308","23a61782":"7321",af952e90:"7360",ea7b1b31:"7367",a32fb7f5:"7433","814f3328":"7472","7accbb75":"7473","90ca9965":"7529","5b12c1a9":"7577",af558054:"7583","9f23071e":"7606","2d84255a":"7608","478bcf42":"7619",a6aa9e1f:"7643","3974811d":"7696","170ab94c":"7714","0b72a6ff":"7715",dcfd3b61:"7742","7dcc0419":"7746",ba1e31c2:"7761","656a21b7":"7813","7d2f6bd9":"7839",dd5377a3:"7846","865d1447":"7886","5bfbde57":"7899","4c76b531":"7900","0a02aff3":"7924","2aa9b0dd":"8160","01a85c17":"8209","40e30cb7":"8221",d9683343:"8245",b9d5de69:"8271",eb35abdd:"8455",fc323215:"8460",f6b2bbb1:"8476","7c823085":"8519","0970ca0c":"8560","935f2afb":"8581","1c323773":"8620",b6072cb9:"8634","3498d2db":"8641",f164116d:"8758","881ac13d":"8768",e237dedf:"8795",ea9c95e7:"8839",dbe4f0b7:"8877","3b089002":"8881","2cf03b61":"8952","9292650b":"9034","63371bf1":"9118",df8c2417:"9120","04c33c1d":"9304","7c97e9a2":"9342","17f9232f":"9437","5d2f6d16":"9515","4aba33e7":"9543","80f9953e":"9582","0b851b4d":"9585","1d245f66":"9591","5eff386f":"9592","239f6efa":"9679","181d712d":"9685",f999fa4a:"9812","0c7edd3c":"9966"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,f)=>{var d=r.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var c=new Promise(((f,c)=>d=e[a]=[f,c]));f.push(d[2]=c);var b=r.p+r.u(a),t=new Error;r.l(b,(f=>{if(r.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var c=f&&("load"===f.type?"missing":f.type),b=f&&f.target&&f.target.src;t.message="Loading chunk "+a+" failed.\n("+c+": "+b+")",t.name="ChunkLoadError",t.type=c,t.request=b,d[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,f)=>{var d,c,b=f[0],t=f[1],o=f[2],n=0;if(b.some((a=>0!==e[a]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(a&&a(f);n{"use strict";var e,f,a,d,c,b={},t={};function r(e){var f=t[e];if(void 0!==f)return f.exports;var a=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=b,e=[],r.O=(f,a,d,c)=>{if(!a){var b=1/0;for(i=0;i=c)&&Object.keys(r.O).every((e=>r.O[e](a[o])))?a.splice(o--,1):(t=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[a,d,c]},r.n=e=>{var f=e&&e.__esModule?()=>e.default:()=>e;return r.d(f,{a:f}),f},a=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var c=Object.create(null);r.r(c);var b={};f=f||[null,a({}),a([]),a(a)];for(var t=2&d&&e;"object"==typeof t&&!~f.indexOf(t);t=a(t))Object.getOwnPropertyNames(t).forEach((f=>b[f]=()=>e[f]));return b.default=()=>e,r.d(c,b),c},r.d=(e,f)=>{for(var a in f)r.o(f,a)&&!r.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:f[a]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((f,a)=>(r.f[a](e,f),f)),[])),r.u=e=>"assets/js/"+({2:"18fc5556",53:"fe23c957",68:"268dddcf",96:"121cced5",99:"0a2b2829",123:"3bc305d8",178:"861bdbb6",187:"45e366b7",235:"85c7de33",289:"9a6ca8b8",298:"a4761f6f",323:"cb38042d",332:"e6cdcb35",347:"6fb4057b",456:"e9d07a0a",577:"d9894068",612:"b1c3f2c7",641:"86a9c212",643:"20110cf9",656:"d8b689b0",682:"1373a77b",708:"9509e94f",770:"df0b489b",868:"d0f64c9c",1079:"1c545b73",1138:"96997528",1211:"26368098",1218:"5bc90040",1274:"f02f7df4",1513:"8ab53c77",1533:"9a34b858",1539:"3fb5a56d",1581:"328083ea",1700:"fc9f0a8f",1707:"f431fa1f",1839:"66491fb6",1874:"5fc994c2",1987:"ecfe08ed",1998:"5133b137",2043:"4e8770ad",2083:"3d4c33f6",2120:"2dcc617a",2124:"0d1d5dba",2138:"1a4e3797",2141:"933bed1e",2154:"9017a355",2247:"af67069a",2269:"3f859f05",2270:"c62bfd53",2338:"7b8d824d",2373:"7a99341f",2377:"38bf2aac",2419:"9eb50243",2438:"4afa4b8a",2459:"649c4fa3",2460:"37fdb427",2496:"85addd09",2525:"d350cff3",2581:"dc701447",2634:"c4f5d8e4",2698:"373c35af",2707:"c50db514",2711:"9e4087bc",2905:"ddab1e1f",2920:"398b3246",2965:"3e7ee0fc",3010:"a55aca30",3015:"0e97a833",3022:"e6bddadc",3103:"f2f4b8a7",3119:"f14c3b1d",3134:"e432d2f9",3150:"090a441b",3182:"6e1398c4",3206:"74a579df",3249:"ccc49370",3360:"c12557ec",3372:"b49de2ad",3379:"f97fefc4",3392:"0ef19a76",3414:"04d1378b",3421:"bab8a798",3486:"cae448e5",3559:"4898f926",3671:"3f3efe2b",3818:"7358fe14",3833:"c262e01e",3890:"06556991",3892:"24602229",3894:"120e2fab",3995:"beec6c9a",4034:"fa42474c",4078:"e8bfc54f",4099:"bc243f9c",4122:"c8447d5b",4196:"f9078c13",4203:"9338ecde",4216:"50214cd4",4261:"66c89031",4324:"9b67fd78",4368:"ef7da448",4480:"4d2064e8",4511:"a6860cb2",4557:"c74a7097",4651:"040764b7",4778:"a622d695",4813:"6875c492",4871:"85a74db3",4879:"00424e3f",4930:"3f50474f",5104:"2ec4e639",5110:"ddb15f76",5210:"4a184f52",5235:"b48043f7",5333:"743699a6",5351:"df5bc064",5403:"684e0aea",5458:"5125c427",5465:"d389a7b2",5484:"30a967f3",5564:"5fcf77d7",5599:"3abc4359",5763:"851303a1",5844:"329947da",5928:"ae694851",5992:"3c59129e",6002:"6781c826",6044:"cd796466",6101:"750255a9",6104:"8e7c33d6",6388:"c7632c1f",6417:"79ac7843",6461:"c83bcda6",6527:"32a9b7bf",6618:"a8a1de49",6643:"289d965c",6646:"e453af6e",6769:"1a01fdf1",6887:"19ee85cd",6913:"41e12717",6938:"b80a1ac9",6941:"f98b7248",6990:"8f43d633",7024:"0f6ee85b",7056:"40113ee6",7109:"54c48e38",7126:"5e26652b",7153:"6af18994",7243:"5a9cd6fb",7308:"48c4a2a0",7321:"23a61782",7360:"af952e90",7367:"ea7b1b31",7433:"a32fb7f5",7472:"814f3328",7473:"7accbb75",7529:"90ca9965",7577:"5b12c1a9",7583:"af558054",7606:"9f23071e",7608:"2d84255a",7619:"478bcf42",7643:"a6aa9e1f",7696:"3974811d",7714:"170ab94c",7715:"0b72a6ff",7742:"dcfd3b61",7746:"7dcc0419",7761:"ba1e31c2",7813:"656a21b7",7839:"7d2f6bd9",7846:"dd5377a3",7886:"865d1447",7899:"5bfbde57",7900:"4c76b531",7924:"0a02aff3",8160:"2aa9b0dd",8209:"01a85c17",8221:"40e30cb7",8245:"d9683343",8271:"b9d5de69",8401:"17896441",8455:"eb35abdd",8460:"fc323215",8476:"f6b2bbb1",8519:"7c823085",8560:"0970ca0c",8581:"935f2afb",8620:"1c323773",8634:"b6072cb9",8641:"3498d2db",8758:"f164116d",8768:"881ac13d",8795:"e237dedf",8839:"ea9c95e7",8877:"dbe4f0b7",8881:"3b089002",8952:"2cf03b61",9034:"9292650b",9118:"63371bf1",9120:"df8c2417",9304:"04c33c1d",9342:"7c97e9a2",9437:"17f9232f",9515:"5d2f6d16",9543:"4aba33e7",9582:"80f9953e",9585:"0b851b4d",9591:"1d245f66",9592:"5eff386f",9679:"239f6efa",9685:"181d712d",9812:"f999fa4a",9966:"0c7edd3c"}[e]||e)+"."+{2:"3373b9bf",53:"643705c4",68:"c7e2bc4c",96:"faf569c2",99:"edd83f34",123:"1b9fa380",178:"280b9b1f",187:"f3d8b74a",235:"10138825",289:"4abf637f",298:"58d2a99b",323:"ee0f3976",332:"51e9bf3e",347:"7f4ce9c1",416:"05118c27",456:"093d089d",577:"be77af72",612:"a166cb62",641:"0bfe854a",643:"45b79a13",656:"e52bc8b4",682:"66d33fde",708:"db909afe",770:"901aae8b",868:"f2dd0f12",1079:"7080559a",1138:"824b22b0",1211:"9b939b14",1218:"3319e33f",1274:"35244da2",1513:"2c82f68a",1533:"fca19837",1539:"ae853ff9",1581:"4195c41d",1700:"f157ac87",1707:"c9fbdd0f",1774:"ad427177",1839:"dfefe3ec",1874:"db0a4081",1987:"5b8550eb",1998:"bb9f1657",2043:"4b08afc9",2083:"9720322e",2120:"c378e6a7",2124:"de224e29",2138:"be49f7cc",2141:"909642c9",2154:"da472e58",2247:"de7dd6c3",2269:"a45011d9",2270:"71c74cf9",2338:"54e2cd25",2373:"8afe65d7",2377:"1798461c",2419:"046f7024",2438:"957fafc1",2459:"890822eb",2460:"63453c8d",2496:"7e4d3165",2525:"59945079",2581:"1981e939",2634:"afb69bab",2698:"2bc80b37",2707:"dae9d9d6",2711:"7d8069cb",2905:"6b019ced",2920:"0ae10d4e",2965:"76402353",3010:"fcb1dac4",3015:"c5b175f4",3022:"96a9572e",3103:"b3494d59",3119:"f5799d4a",3134:"c320ce7a",3150:"31216255",3182:"e872148c",3206:"f70d2090",3249:"05697243",3282:"f514eeda",3360:"b7fe54da",3372:"c76e1161",3379:"e3efaf98",3392:"30233b6b",3414:"8a59078e",3421:"919e88ab",3486:"7155715f",3559:"e797962c",3671:"c422c4ff",3818:"c5c72ae2",3833:"96f6bd4c",3890:"a1e9bc3d",3892:"df277861",3894:"7118bdad",3995:"25a3fcd8",4034:"6e02f4ab",4078:"65e44e04",4098:"2ce64e20",4099:"56c58255",4122:"611092dd",4196:"8bb50cb6",4203:"f17ba905",4216:"f1fa5def",4261:"039d9b7e",4324:"cb3ef21a",4368:"7a1707f4",4480:"67192b50",4511:"7596329b",4557:"4e05340b",4651:"0dcb9382",4778:"7739c121",4813:"858bb418",4871:"82fed3b6",4879:"f648c4cc",4930:"ee7974c5",5104:"7d2d644b",5110:"58b49f3b",5210:"43ddf441",5235:"66b0d9a6",5333:"2ce8bcd4",5351:"70a63a4b",5403:"88c0edac",5458:"1e49bd17",5465:"c1a5338d",5484:"916290d1",5564:"fdb2b03a",5599:"feb62006",5763:"f3023de0",5844:"39651f20",5928:"e7b6bff9",5992:"9e140e08",6002:"a55b3bbe",6044:"6f6a7f64",6101:"16c7c282",6104:"7bedeeb2",6388:"2afcabcc",6417:"6b5cfd35",6461:"298241f0",6527:"c4082127",6618:"e217f8eb",6643:"6c9f1bae",6646:"9a120b1c",6769:"9d3b496e",6887:"de5f9600",6913:"b3eed543",6938:"175f49b8",6941:"b9946c6e",6990:"4e452f8b",7024:"1df905a6",7056:"4c3565bb",7109:"21d7a131",7126:"3803ef1b",7153:"ef523078",7243:"a96191eb",7308:"6a4ec96e",7321:"a142122a",7360:"0cb4ee98",7367:"e673a4c0",7433:"d358ef91",7472:"1e97cc47",7473:"9e9897ae",7529:"873b7d50",7577:"05962f98",7583:"47599a5e",7606:"bcb666eb",7608:"5aa43b26",7619:"6e16aad9",7643:"ceda7075",7696:"a36dbbbc",7714:"1a5f4bec",7715:"47b7048e",7742:"e2bbc433",7746:"da942ed4",7761:"866bd94c",7813:"0071775d",7839:"67784972",7846:"2356992f",7886:"b3619613",7899:"4495bcb5",7900:"4c2ae5f9",7924:"86b8b3eb",8160:"1635a405",8209:"462c7200",8221:"4b9fad05",8245:"6305ce29",8271:"5e1e4d58",8382:"bc645a9c",8401:"ab9f7aa1",8455:"e26bbdf6",8460:"bc04a210",8476:"0a7de365",8519:"773348c9",8560:"d824ac45",8581:"166b5870",8620:"7389ae93",8634:"f1f6f143",8641:"45e762a4",8758:"ea9aecd2",8768:"2f20ddd2",8795:"1aee74c9",8839:"5ccb20b4",8877:"9ecfb22b",8881:"012e62b4",8913:"3eea0e0d",8952:"fc494d15",9034:"2e9752e5",9118:"a72526cb",9120:"6321b9e1",9304:"693e72fc",9342:"d7be4740",9437:"54824781",9462:"04a908b6",9515:"719d5572",9543:"2f0398d6",9551:"0760c9a4",9582:"f682bd67",9585:"6283e682",9591:"8fba063b",9592:"ed6cb595",9679:"b088b627",9685:"9d37d632",9812:"1e75f82d",9966:"6773f7e6"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,f)=>Object.prototype.hasOwnProperty.call(e,f),d={},c="website:",r.l=(e,f,a,b)=>{if(d[e])d[e].push(f);else{var t,o;if(void 0!==a)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var c=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),c&&c.forEach((e=>e(a))),f)return f(a)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/Detox/",r.gca=function(e){return e={17896441:"8401",24602229:"3892",26368098:"1211",96997528:"1138","18fc5556":"2",fe23c957:"53","268dddcf":"68","121cced5":"96","0a2b2829":"99","3bc305d8":"123","861bdbb6":"178","45e366b7":"187","85c7de33":"235","9a6ca8b8":"289",a4761f6f:"298",cb38042d:"323",e6cdcb35:"332","6fb4057b":"347",e9d07a0a:"456",d9894068:"577",b1c3f2c7:"612","86a9c212":"641","20110cf9":"643",d8b689b0:"656","1373a77b":"682","9509e94f":"708",df0b489b:"770",d0f64c9c:"868","1c545b73":"1079","5bc90040":"1218",f02f7df4:"1274","8ab53c77":"1513","9a34b858":"1533","3fb5a56d":"1539","328083ea":"1581",fc9f0a8f:"1700",f431fa1f:"1707","66491fb6":"1839","5fc994c2":"1874",ecfe08ed:"1987","5133b137":"1998","4e8770ad":"2043","3d4c33f6":"2083","2dcc617a":"2120","0d1d5dba":"2124","1a4e3797":"2138","933bed1e":"2141","9017a355":"2154",af67069a:"2247","3f859f05":"2269",c62bfd53:"2270","7b8d824d":"2338","7a99341f":"2373","38bf2aac":"2377","9eb50243":"2419","4afa4b8a":"2438","649c4fa3":"2459","37fdb427":"2460","85addd09":"2496",d350cff3:"2525",dc701447:"2581",c4f5d8e4:"2634","373c35af":"2698",c50db514:"2707","9e4087bc":"2711",ddab1e1f:"2905","398b3246":"2920","3e7ee0fc":"2965",a55aca30:"3010","0e97a833":"3015",e6bddadc:"3022",f2f4b8a7:"3103",f14c3b1d:"3119",e432d2f9:"3134","090a441b":"3150","6e1398c4":"3182","74a579df":"3206",ccc49370:"3249",c12557ec:"3360",b49de2ad:"3372",f97fefc4:"3379","0ef19a76":"3392","04d1378b":"3414",bab8a798:"3421",cae448e5:"3486","4898f926":"3559","3f3efe2b":"3671","7358fe14":"3818",c262e01e:"3833","06556991":"3890","120e2fab":"3894",beec6c9a:"3995",fa42474c:"4034",e8bfc54f:"4078",bc243f9c:"4099",c8447d5b:"4122",f9078c13:"4196","9338ecde":"4203","50214cd4":"4216","66c89031":"4261","9b67fd78":"4324",ef7da448:"4368","4d2064e8":"4480",a6860cb2:"4511",c74a7097:"4557","040764b7":"4651",a622d695:"4778","6875c492":"4813","85a74db3":"4871","00424e3f":"4879","3f50474f":"4930","2ec4e639":"5104",ddb15f76:"5110","4a184f52":"5210",b48043f7:"5235","743699a6":"5333",df5bc064:"5351","684e0aea":"5403","5125c427":"5458",d389a7b2:"5465","30a967f3":"5484","5fcf77d7":"5564","3abc4359":"5599","851303a1":"5763","329947da":"5844",ae694851:"5928","3c59129e":"5992","6781c826":"6002",cd796466:"6044","750255a9":"6101","8e7c33d6":"6104",c7632c1f:"6388","79ac7843":"6417",c83bcda6:"6461","32a9b7bf":"6527",a8a1de49:"6618","289d965c":"6643",e453af6e:"6646","1a01fdf1":"6769","19ee85cd":"6887","41e12717":"6913",b80a1ac9:"6938",f98b7248:"6941","8f43d633":"6990","0f6ee85b":"7024","40113ee6":"7056","54c48e38":"7109","5e26652b":"7126","6af18994":"7153","5a9cd6fb":"7243","48c4a2a0":"7308","23a61782":"7321",af952e90:"7360",ea7b1b31:"7367",a32fb7f5:"7433","814f3328":"7472","7accbb75":"7473","90ca9965":"7529","5b12c1a9":"7577",af558054:"7583","9f23071e":"7606","2d84255a":"7608","478bcf42":"7619",a6aa9e1f:"7643","3974811d":"7696","170ab94c":"7714","0b72a6ff":"7715",dcfd3b61:"7742","7dcc0419":"7746",ba1e31c2:"7761","656a21b7":"7813","7d2f6bd9":"7839",dd5377a3:"7846","865d1447":"7886","5bfbde57":"7899","4c76b531":"7900","0a02aff3":"7924","2aa9b0dd":"8160","01a85c17":"8209","40e30cb7":"8221",d9683343:"8245",b9d5de69:"8271",eb35abdd:"8455",fc323215:"8460",f6b2bbb1:"8476","7c823085":"8519","0970ca0c":"8560","935f2afb":"8581","1c323773":"8620",b6072cb9:"8634","3498d2db":"8641",f164116d:"8758","881ac13d":"8768",e237dedf:"8795",ea9c95e7:"8839",dbe4f0b7:"8877","3b089002":"8881","2cf03b61":"8952","9292650b":"9034","63371bf1":"9118",df8c2417:"9120","04c33c1d":"9304","7c97e9a2":"9342","17f9232f":"9437","5d2f6d16":"9515","4aba33e7":"9543","80f9953e":"9582","0b851b4d":"9585","1d245f66":"9591","5eff386f":"9592","239f6efa":"9679","181d712d":"9685",f999fa4a:"9812","0c7edd3c":"9966"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(f,a)=>{var d=r.o(e,f)?e[f]:void 0;if(0!==d)if(d)a.push(d[2]);else if(/^(1869|5354)$/.test(f))e[f]=0;else{var c=new Promise(((a,c)=>d=e[f]=[a,c]));a.push(d[2]=c);var b=r.p+r.u(f),t=new Error;r.l(b,(a=>{if(r.o(e,f)&&(0!==(d=e[f])&&(e[f]=void 0),d)){var c=a&&("load"===a.type?"missing":a.type),b=a&&a.target&&a.target.src;t.message="Loading chunk "+f+" failed.\n("+c+": "+b+")",t.name="ChunkLoadError",t.type=c,t.request=b,d[1](t)}}),"chunk-"+f,f)}},r.O.j=f=>0===e[f];var f=(f,a)=>{var d,c,b=a[0],t=a[1],o=a[2],n=0;if(b.some((f=>0!==e[f]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(f&&f(a);n