Skip to content

Commit adf0be7

Browse files
authored
Merge branch 'main' into hg/sc5_cli
2 parents 936b922 + 124098b commit adf0be7

File tree

28 files changed

+358
-177
lines changed

28 files changed

+358
-177
lines changed

docs/basics/acct-team-mgmt/concurrency-limits.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ curl -u "$SAUCE_USERNAME:$SAUCE_ACCESS_KEY" --location \
5959

6060
:::caution
6161

62-
Queuing will be disabled on March 1st, 2024. To better manage your usage, check the [Usage Analytics](https://docs.saucelabs.com/dev/api/usage/) that Sauce Labs provides for you
62+
Queuing will be disabled on May 1st, 2024 (implemented upon contract renewal). To better manage your usage, check the [Usage Analytics](https://docs.saucelabs.com/dev/api/usage/) that Sauce Labs provides for you
6363

6464
:::
6565

docs/basics/acct-team-mgmt/private-device-mgmt.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ This setting does **NOT** install the app. You must manually or via automation i
6565
`com.google.chrome.ios`
6666
`com.apps.app1`
6767
`com.ios.app2`
68+
69+
*Multiple entries must be comma-separated.*
6870
:::
6971

7072
## System App Allow List (iOS)
@@ -75,8 +77,10 @@ Certain iOS preinstalled apps are hidden by default, e.g. Messages, Mail, Notes.
7577
For a list of native iPhone and iPad apps and their corresponding bundle IDs, please follow the reference link below.
7678
https://support.apple.com/en-gb/guide/deployment/depece748c41/web
7779

78-
`com.apple.MobileSMS`
79-
`com.apple.mobilenotes`
80+
`com.apple.MobileSMS`
81+
`com.apple.mobilenotes`
82+
83+
*Multiple entries must be comma-separated.*
8084
:::
8185

8286
## Account Allow List
@@ -89,6 +93,8 @@ Update this setting for each account email to preserve store and payment account
8993
:::important
9094
9195
96+
97+
*Multiple entries must be comma-separated.*
9298
:::
9399

94100
## Retain folders/filepath (Android)
@@ -114,6 +120,8 @@ Invalid path: `/data/local/tmp/`
114120
:::important
115121
`/data/com.wavelink.velocity/files`
116122
`/com.my.app/data/temp/folder`
123+
124+
*Multiple entries must be comma-separated.*
117125
:::
118126

119127
## Enable Apple Pay

docs/dev/api/accounts.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1774,6 +1774,12 @@ Assign user to one or multiple teams. New team assignments will replace the exis
17741774
<td><p><small>| PATH | REQUIRED | STRING |</small></p><p>The unique identifier of the Sauce Labs user. You can look up the ID of a user in your organization using the <a href="#lookup-users">Lookup Users</a> endpoint.</p></td>
17751775
</tr>
17761776
</tbody>
1777+
<tbody>
1778+
<tr>
1779+
<td><code>teams</code></td>
1780+
<td><p><small>| BODY | REQUIRED | ARRAY OF STRINGS |</small></p><p>List of unique team identifiers. You can look up the ID of teams in your organization using the <a href="#lookup-teams">Lookup Teams</a> endpoint.</p></td>
1781+
</tr>
1782+
</tbody>
17771783
</table>
17781784

17791785
<Tabs
@@ -1790,7 +1796,7 @@ values={[
17901796
curl -u "$SAUCE_USERNAME:$SAUCE_ACCESS_KEY" --location \
17911797
--request PUT 'https://api.us-west-1.saucelabs.com/team-management/v1/users/<user-id>/teams/' \
17921798
--header 'Content-Type: application/json' \
1793-
--data-raw '["<team1-id>", "<team2-id>"]' | json_pp
1799+
--data-raw '{"teams": ["<team1-id>", "<team2-id>"]}' | json_pp
17941800
```
17951801

17961802
</TabItem>
@@ -1800,7 +1806,7 @@ curl -u "$SAUCE_USERNAME:$SAUCE_ACCESS_KEY" --location \
18001806
curl -u "$SAUCE_USERNAME:$SAUCE_ACCESS_KEY" --location \
18011807
--request PUT 'https://api.eu-central-1.saucelabs.com/team-management/v1/users/<user-id>/teams/' \
18021808
--header 'Content-Type: application/json' \
1803-
--data-raw '["<team1-id>", "<team2-id>"]' | json_pp
1809+
--data-raw '{"teams": ["<team1-id>", "<team2-id>"]}' | json_pp
18041810
```
18051811

18061812
</TabItem>

docs/dev/api/rdc.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ curl -u "$SAUCE_USERNAME:$SAUCE_ACCESS_KEY" --location \
108108
"isAlternativeIoEnabled": true,
109109
"supportsManualWebTesting": true,
110110
"supportsMultiTouch": true,
111-
"supportsXcuiTest": true
111+
"supportsXcuiTest": false
112112
},
113113
{...more devices},
114114
]
@@ -801,7 +801,7 @@ curl -u "$SAUCE_USERNAME:$SAUCE_ACCESS_KEY" --location \
801801
"supportsMinicapSocketConnection" : false,
802802
"supportsMockLocations" : true,
803803
"supportsMultiTouch" : true,
804-
"supportsXcuiTest" : true
804+
"supportsXcuiTest" : false
805805
},
806806
"device_log_url" : "https://api.eu-central-1.saucelabs.com/v1/rdc/jobs/51873a114a6141239c933042e948aa54/deviceLogs",
807807
"device_name" : "Samsung Galaxy S10",

docs/dev/cli/saucectl/run.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,11 @@ Execute tests according to the environment, framework, and test suite specificat
182182
<td></td>
183183
<td>The tunnel owner, if it is not the testing account.</td>
184184
</tr>
185+
<tr>
186+
<td><span className="t-cli"><a href="#--tunnel-timeout">--tunnel-timeout</a></span></td>
187+
<td></td>
188+
<td>How long to wait for the specified tunnel to be ready. Supports duration values like '10s', '30m' etc. (default: 30s)</td>
189+
</tr>
185190
<tr>
186191
<td><span className="t-cli"><a href="#--upload-timeout">--upload-timeout</a></span></td>
187192
<td></td>
@@ -538,6 +543,7 @@ Toggles saucectl's own junit reporting on/off. This only affects the reports tha
538543
```bash
539544
saucectl run --reporters.junit.enabled=true
540545
```
546+
541547
</div>
542548

543549
### <span className="cli">--reporters.junit.filename</span>
@@ -703,6 +709,19 @@ saucectl run --tunnel-name not-my-tunnel --tunnel-owner another.sauce.username
703709

704710
</div>
705711

712+
### <span className="cli">--tunnel-timeout</span>
713+
714+
<div className="cli-desc">
715+
<p><small>| OPTIONAL | DURATION |</small></p>
716+
717+
How long to wait for the specified tunnel to be ready. Supports duration values like '10s', '30m' etc. (default: 30s)
718+
719+
```bash
720+
saucectl run --tunnel-name who-knows-when-ready --tunnel-timeout 1m
721+
```
722+
723+
</div>
724+
706725
### <span className="cli">--verbose</span>
707726

708727
<div className="cli-desc">

docs/dev/test-configuration-options.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,21 @@ Describes the current session’s user prompt handler. The default value is `"di
176176

177177
---
178178

179+
### `webSocketUrl`
180+
181+
<p><small>| BOOLEAN | <span className="sauceGreen">Desktop Only</span> | <span className="sauceGreen">BETA</span> |</small></p>
182+
183+
Enables [W3C WebDriver BiDi](https://w3c.github.io/webdriver-bidi/) support. This allows Selenium 4 clients to use [Bi-Directional functionality](https://www.selenium.dev/documentation/webdriver/bidirectional/). It also enables BiDi for other test frameworks, like [WebDriverIO](https://webdriver.io/docs/api/webdriverBidi/). In particular, this capability exposes the WebSocket endpoint which is available under `webSocketUrl` field in session startup response body. This endpoint can be used to issue WebDriver BiDi commands as described by the [specification](https://w3c.github.io/webdriver-bidi/). The default value is `false`.
184+
185+
The `webSocketUrl` capability is **not compatible** with [`extendedDebugging`](#extendeddebugging) capability.
186+
187+
188+
```java
189+
"webSocketUrl": true
190+
```
191+
192+
---
193+
179194
## Desktop Browser Capabilities: Sauce-Specific – Optional
180195

181196
Browser-specific optional capabilities you can add to the `sauce:options` block of your test session creation code.
@@ -345,6 +360,20 @@ Sets idle test timeout in seconds. As a safety measure to prevent tests from run
345360

346361
---
347362

363+
### `devTools`
364+
365+
<p><small>| OPTIONAL | BOOLEAN | <span className="sauceGreen">Desktop Only</span> | <span className="sauceGreen">BETA</span> | </small></p>
366+
367+
Enables [Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/) support, which is disabled by default on Sauce Labs platform. This allows Selenium 4 clients to use [Bi-Directional functionality](https://www.selenium.dev/documentation/webdriver/bidirectional/). In particular, this capability exposes the WebSocket endpoint which is available under `se:cdp` field in session startup response body. This endpoint can be used to issue Chrome DevTools Protocol commands as described by the [specification](https://chromedevtools.github.io/devtools-protocol/). The default value is `false`.
368+
369+
The `devTools` capability is **not compatible** with [`extendedDebugging`](#extendeddebugging) capability.
370+
371+
```java
372+
"devTools": true
373+
```
374+
375+
---
376+
348377
## Mobile Appium Capabilities
349378

350379
As the W3C WebDriver Protocol is supported in Appium v1.6.5 and higher, and required for Appium v2.0, we encourage and support using it for your Appium mobile app tests instead of the JSON Wire Protocol (JWP). We'll continue to support JWP in all currently supported Appium 1.X versions, but please be aware that with Appium 2.0, JWP support will be fully deprecated in favor of W3C.

docs/mobile-apps/automated-testing/appium/appium-versions.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,12 @@ The current end-of-life strategy outlined above is specific to Real Devices. We
155155

156156
## Real Devices
157157

158+
:::info Supported Custom Appium Plugins:
159+
The following list of custom Appium plugins are supported:
160+
- [Appium Images Plugin](https://www.npmjs.com/package/@appium/images-plugin). This plugin will now be included by default with Appium version `latest` and all subsequent versions released after April 1st.
161+
- [Deque axe DevTools® Mobile Analyzer Accessibility plugin](https://docs.deque.com/devtools-mobile/appium). This plugin helps you with automated accessibility testing. Empower your team to focus on identifying and resolving accessibility issues. Requires Deque axe DevTools® Mobile license.
162+
:::
163+
158164
### Appium 2.x
159165

160166
<table>
@@ -204,6 +210,29 @@ The current end-of-life strategy outlined above is specific to Real Devices. We
204210
</ul>
205211
</td>
206212
</tr>
213+
<tr>
214+
<td>
215+
<code>appium2-deque-accessibility</code>
216+
</td>
217+
<td>
218+
<span className="sauceGreen">Active</span>
219+
</td>
220+
<td>
221+
<a href="https://docs.deque.com/devtools-mobile/2024.2.14/en/march-2024" target="_blank">
222+
Deque axe DevTools® Mobile Analyzer Accessibility plugin</a> helps you with automated accessibility testing. Contains only the latest version of Appium. The plugin helps to identify and to resolve accessibility issues. Requires Deque axe DevTools® license.
223+
<br />
224+
<ul>
225+
<li>
226+
<a href="https://docs.deque.com/devtools-mobile/2024.2.14/en/march-2024" target="_blank">
227+
<code>axeDevToolsMobile Appium Plugin</code>: 2.0.0 </a>
228+
</li>
229+
<li>
230+
<a href="https://github.com/appium/appium/releases/tag/appium%402.5.1" target="_blank">
231+
<code>appium</code>: 2.5.1 </a>
232+
</li>
233+
</ul>
234+
</td>
235+
</tr>
207236
<tr>
208237
<td>
209238
<code>appium2-20240301</code>

docs/mobile-apps/features/appium-inspector.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,6 @@ x/y coordinates
9797

9898
## Hybrid Apps / WebView
9999

100-
<p><span className="sauceGreen">iOS Only</span></p>
101-
102100
Utilize [Dev Tools](https://docs.saucelabs.com/web-apps/live-testing/dev-tools/) to validate hybrid or web views within native applications.
103101
This feature enables seamless validation of web content integrated within native apps, providing comprehensive testing capabilities for a
104102
smooth user experience across different platforms.

docs/mobile-apps/features/virtual-usb.md

Lines changed: 8 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ It integrates into your development and test environment, meaning you can use yo
3737
- Android Studio 4 or higher.
3838
- If you need to use [Sauce Connect Proxy](/secure-connections/sauce-connect), you'll need to have the client installed first.
3939

40+
:::note Limitations
41+
vUSB is currently only supported for test automation. Debugging with any IDE, and attaching debuggers with Xcode and Android Studio, are not advised and won't be supported at this time).
42+
iOS17 is not supported at this time. We will soon introduce a new CLI tool to connect to a device and run automated tests.
43+
:::
44+
4045
## Using Virtual USB
4146

4247
:::tip CLI Reference
@@ -282,11 +287,11 @@ adb connect localhost:7000
282287

283288
### Test and Debug
284289

285-
8. Now, you can debug and run tests on your app. For guidance and ideas, see the [Example Use Cases](/mobile-apps/features/virtual-usb/#example-use-cases).
290+
8. Now, you can debug and run tests on your app. We advise you to use our Sauce App Storage to upload the apps and run tests against them.
286291

287292
<!-- prettier-ignore-start -->
288-
:::caution iOS Limitation
289-
To do proper debugging, the iOS device symbols will need to be downloaded to your local machine. This happens automatically when you're connecting to a Sauce Labs iOS device for the first time via a remote debug vUSB session with Xcode. **Xcode will attempt to download the iOS device symbols over the vUSB tunnel, causing a lag that can last up to a few minutes.**
293+
:::caution iOS Limitations
294+
Attaching a debugger is not supported due to the amount of data that the iOS device symbols will need to be downloaded to your local machine. This process occurs automatically when you're connecting to a Sauce Labs iOS device for the first time via a remote debug vUSB session with Xcode. Xcode will attempt to download the iOS device symbols over the vUSB tunnel, causing a lag that can last from a few minutes to an hour..**
290295

291296
- **What to Do**: Go to `~/Library/Developer/Xcode/iOS DeviceSupport/` and check the used iOS version of the phone to see if the symbols have been downloaded. The total used space per OS should be more than 1GB. If they are less than 1MB, delete the folder and restart Xcode again so it can re-fetch them.
292297
This a one-time action that you won't need to do again for future tests.
@@ -336,10 +341,6 @@ java -jar virtual-usb-client.jar disconnect --sessionId 37D274BC3A65A34BB3DA4DDF
336341

337342
## Example Use Cases
338343

339-
### Exploratory Testing
340-
341-
Introduce breakpoints in your IDE, for example, Android Studio or XCODE, and then do exploratory testing.
342-
343344
### ADB commands
344345

345346
You can execute `adb` commands on the device connected over vUSB as you would normally also use. This is a simple example to capture a screenshot and pull it to your local machine.
@@ -393,92 +394,3 @@ The following example sets up forwarding of host port 40000 (laptop/CI) to devic
393394
To for example profile your Android app you can follow the instructions as mentioned [here](https://developer.android.com/studio/profile). This can result in the following data.
394395

395396
<img src={useBaseUrl('img/virtual-usb/vusb-android-profiling.png')} alt="Virtual USB Android Studio Profiling" />
396-
397-
### Chrome DevTools Web Debugging
398-
399-
This example demonstrates how to connect your test device to Chrome Inspector and export an [Http ARchive (HAR)](<https://en.wikipedia.org/wiki/HAR_(file_format)>) file to your local machine from a live testing session. Chrome Inspector's suite of developer tools provides a powerful way to work with your web pages while leveraging our real devices.
400-
401-
HAR files are useful for identifying performance issues, network traffic, and other information, such as:
402-
403-
- HTTP requests generated by your web pages
404-
- API calls
405-
- User analytics
406-
- Third-party web service calls
407-
408-
1. Follow the steps in the previous section to start up a test session (i.e., download vUSB client, connect to Data Center, connect to your device, and initialize an `adb` connection). Have your Sauce Labs device test session up on your screen.
409-
410-
2. Open a Chrome tab locally and run `chrome://inspect` in the address bar. This opens the Chrome Inspector.
411-
<img src={useBaseUrl('img/virtual-usb/vusb4.png')} alt="Virtual USB" width="400" />
412-
413-
3. Use your command line terminal to open Chrome on the device by running the `adb` commands below. The first one launches the Chrome app:
414-
415-
```java
416-
$ ./adb shell am start -n com.android.chrome/com.google.android.apps.chrome.Main
417-
```
418-
419-
Then, navigate to a website (for this example, we'll use our demo site).
420-
421-
```java
422-
$ ./adb shell am start -a android.intent.action.VIEW -d http://www.saucedemo.com
423-
```
424-
425-
4. If the above commands are successful, you should see a new set of options under the **Remote Target** heading in your `chrome://inspect` tab.
426-
427-
If you click **Inspect**, a new window will open, displaying Chrome DevTools the same as if the device were sitting on your desk, connected to a USB cable.
428-
<img src={useBaseUrl('img/virtual-usb/vusb3.png')} alt="Virtual USB" width="400" />
429-
<img src={useBaseUrl('img/virtual-usb/vusb2.png')} alt="Virtual USB" width="600" />
430-
431-
5. Click the **Network** tab and reload the page to display all HTTP requests made during the refresh:
432-
433-
6. Under the **Network** tab, click the down arrow icon to export a HAR file locally. This will prompt you with a Save dialog. Choose a location for the HAR file.
434-
<img src={useBaseUrl('img/virtual-usb/vusb6.png')} alt="Virtual USB HAR" width="600" />
435-
436-
7. Review your HAR file. It should contain every HTTP request/response gathered during the page load, as well as all of the headers, parameters, timing info. Using this information, you can dive deep into the way your web pages are put together. You can do it on any configured device, without having to worry about power management or keeping up with the physical device.
437-
438-
:::tip
439-
For more tips on working with HAR Files, check out [Visualize HAR Files with the Sauce Labs React Network Viewer Component](https://opensource.saucelabs.com/blog/react_network_viewer).
440-
:::
441-
442-
You can execute `adb` commands on the device connected over vUSB as you would normally also use. This is a simple example to capture a screenshot and pull it to your local machine.
443-
444-
```bash
445-
#Create a temporary folder to save a screenshot.
446-
mkdir tmp
447-
#Capture a screenshot and save to /sdcard/screen.png on your Android divice.
448-
adb shell screencap -p /sdcard/screen.png
449-
450-
#Grab the screenshot from /sdcard/screen.png to /tmp/screen.png on your PC.
451-
adb pull /sdcard/screen.png /tmp/screen.png
452-
453-
#Delete /sdcard/screen.png.
454-
adb shell rm /sdcard/screen.png
455-
456-
#open the screenshot on your PC.
457-
open /tmp/screen.png
458-
```
459-
460-
### iOS Debugging
461-
462-
To deploy and debug your iOS apps, you can use Xcode. To debug your website, we recommend using the developer tools within Safari.
463-
464-
### **Xcode Debugging**
465-
466-
:::note
467-
Before debugging with Xcode, please read the known limitations under [Test and Debug](/mobile-apps/features/virtual-usb/#test-and-debug).
468-
:::
469-
470-
To profile your app: from your Xcode nav, select **Product** > **Profile**. It will automatically profile the app and generate a new menu, as shown below.
471-
472-
<img src={useBaseUrl('img/virtual-usb/vusb-ios-profiling.png')} alt="Virtual USB Profiling" />
473-
474-
<br/>
475-
476-
In this example below, **Energy Log** has been selected and recording has been started. This can result in the following screen.
477-
478-
<img src={useBaseUrl('img/virtual-usb/vusb-energy-logs.png')} alt="Virtual USB Energy Logs" />
479-
480-
### **Safari Web Debugging**
481-
482-
To debug with Safari: Open Safari > From the nav, select **Develop** > **Select your device** > **Select the view** you want to debug. In our example, we want to debug the [Sauce Swag Labs demo website](https://www.saucedemo.com).
483-
484-
<img src={useBaseUrl('img/virtual-usb/vusb-safari-debug.png')} alt="Virtual USB Energy Logs" />

docs/mobile-apps/mobile-faq.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,11 @@ We maintain an allowlist of commands that can be executed within our Real Device
8383
* pm clear
8484
* input
8585
* (ls|cp|mkdir|echo|grep|cut|pwd|dumpsys)
86-
* getProp
86+
* getprop
8787
* am compat enable
8888
* cmd connectivity airplane-mode (enable|disable)
89+
* settings put global (animator_duration_scale|transition_animation_scale|window_animation_scale) <value\>
90+
* setprop debug.firebase.analytics.app <value\>
8991

9092
If the command you require is not listed, you can submit a request through this [form](https://docs.google.com/forms/d/1t4MCf6ClHlLxX80RP5bNU9wVJBhQOd4ll6IjP0ecMgc)
9193
or reach out to your Customer Success Manager or Sauce Labs Support for assistance.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
You can clip to a specific element on the page by using the `clipSelector` option when calling Sauce visual.
2+
3+
Notes:
4+
5+
- Clipping is done by taking a screenshot of the page then clipping it to the location of the requested element.
6+
- We will attempt to scroll the element into view before taking the snapshot.
7+
- We can only take a screenshot of what is visible in the current viewport, however, this can be combined with full page option to enable clipping large vertical elements.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import ClippingDescription from './_clipping-description.md'
2+
3+
<ClippingDescription />
4+
5+
Example:
6+
7+
```ts
8+
await browser.sauceVisualCheck('Visible Sale Banner', {
9+
// A document.querySelector compatible selector that we should crop the screenshot to
10+
clipSelector: '.your-css-selector',
11+
})
12+
```

0 commit comments

Comments
 (0)