Skip to content

Commit

Permalink
Merge branch 'main' into 2024-mw
Browse files Browse the repository at this point in the history
  • Loading branch information
srossen authored Aug 13, 2024
2 parents 1719ab8 + 3b07fb4 commit 558fc39
Show file tree
Hide file tree
Showing 31 changed files with 853 additions and 183 deletions.
1 change: 1 addition & 0 deletions docs/basics/data-center-endpoints.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ Sauce Connect Proxy makes its initial connection to saucelabs.com. After that, i
| ---------------------------- | ----------------------------------------------- |
| OnDemand Endpoint | https://ondemand.us-east-4.saucelabs.com/wd/hub |
| REST API | api.us-east-4.saucelabs.com |
| Sauce Connect Tunnel Servers | \*.tunnels.us-east-4.saucelabs.com:443 |

### EU Central Data Center

Expand Down
82 changes: 64 additions & 18 deletions docs/dev/test-configuration-options.md
Original file line number Diff line number Diff line change
Expand Up @@ -284,9 +284,12 @@ Always use the latest Selenium version. The Selenium developers are very conscie

<p><small>| BOOLEAN |</small></p>

Allows the browser to communicate directly with servers without going through a proxy. By default, Sauce routes traffic from Internet Explorer and Safari through an HTTP proxy server so that HTTPS connections with self-signed certificates will work. The proxy server can cause problems for some users, and this setting allows you to avoid it.
Allows the browser to communicate directly with servers without going through a proxy that is shipped with Selenium versions prior to v3.
By default, Sauce routes traffic from Internet Explorer and Safari through an HTTP proxy server so that HTTPS connections with self-signed certificates will work.
The proxy server can cause problems for some users, and this setting allows you to avoid it.

:::note
This configuration is only relevant for Selenium versions 2.x and older.
Any test run with a Sauce Connect tunnel has to use the proxy and this flag will be ignored.
:::

Expand Down Expand Up @@ -840,6 +843,63 @@ Using Appium 2? Prevent `appium:`-prefix repetitiveness and start using [`appium

---

### `appium:timeZone`

<p><small>| OPTIONAL | BOOLEAN | <span className="sauceGreen">Virtual and Real Devices</span> | <span className="sauceGreen">Android Only</span> |</small></p>

Overrides the current device's time zone. This change is done on per-device basis and is
preserved for the whole duration of the test session. The time zone identifier must be a
valid name from [the list of available time zone identifiers](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones),
for example `Europe/Paris`.

:::note
The iOS equivalent is [`appium:appTimeZone`](#appiumapptimezone).
:::

:::note
This capability is only supported since UiAutomator2 driver version 3.1.0.
:::

```java
MutableCapabilities capabilities = new MutableCapabilities();
capabilities.setCapability("appium:timeZone", "Europe/Paris");
```

:::tip
Using Appium 2? Prevent `appium:`-prefix repetitiveness and start using [`appium:options`](#appiumoptions) for Real Devices instead.
:::

---

### `appium:appTimeZone`

<p><small>| OPTIONAL | BOOLEAN | <span className="sauceGreen">Virtual and Real Devices</span> | <span className="sauceGreen">iOS Only</span> |</small></p>

Defines the custom time zone override for the application under test.
You can use `UTC`, `PST`, `EST`, as well as place-based timezone names such as `America/Los_Angeles`.
See [the list of available time zone identifiers](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) f
or more details. The same behavior could be achieved by providing a custom
value to the `TZ` environment variable via the `appium:processArguments` capability.

:::note
The Android equivalent is [`appium:timeZone`](#appiumtimezone).
:::

:::note
This capability is only supported since XCUITest driver version 7.10.0.
:::

```java
MutableCapabilities capabilities = new MutableCapabilities();
capabilities.setCapability("appium:appTimeZone", "America/Los_Angeles");
```

:::tip
Using Appium 2? Prevent `appium:`-prefix repetitiveness and start using [`appium:options`](#appiumoptions) for Real Devices instead.
:::

---

## Mobile Appium Timeout Capabilities

As with Selenium Tests, Appium also supports different types of timeouts like:
Expand Down Expand Up @@ -1556,7 +1616,7 @@ capabilities.setCapability("sauce:options", sauceOptions);

<p><small>| OPTIONAL | STRING | <span className="sauceGreen">Real Devices Only</span> | <span className="sauceGreen">BETA</span> |</small></p>

Set a network profile with predefined network conditions at the beginning of the session.
Set a network profile with predefined network conditions at the beginning of the session.
Please refer to the [list of network profiles](https://docs.saucelabs.com/mobile-apps/features/network-throttling/#predefined-network-profiles) for more information about each profile's network conditions.

```java
Expand Down Expand Up @@ -2047,15 +2107,8 @@ capabilities.setCapability("sauce:options", sauceOptions);
Allows you to set a custom time zone for your test based on a city name. Most major cities are supported.

- **For Desktop VMs**: can be configured with custom time zones. This feature should work on all operating systems, however, time zones on Windows VMs are approximate. The time zone defaults to UTC. Look for the "principal cities" examples on this [list of UTC time offsets](https://en.wikipedia.org/wiki/List_of_UTC_time_offsets).
- **For iOS Virtual Devices**: you can use this capability to change the time on the Mac OS X VM, which will be picked up by the iOS simulator.
- **For Android Virtual Devices**: this capability is not supported for Android devices, but for Android 7.2 or later, there is a workaround. Use the following ADB command to grant Appium notification read permission in order to use the time zone capability:

```java
adb shell cmd notification allow_listener
io.appium.settings/io.appium.settings.NLService
```

* See the [Appium Android documentation](http://appium.io/docs/en/writing-running-appium/android/android-shell/#mobile-shell) for additional support.
- **For iOS Virtual Devices**: You can use this capability to change the time on the Mac OS X VM, which will be picked up by the iOS simulator.
- **For Android Virtual Devices**: This capability is not supported for virtual Android devices. Consider using [appium:timeZone](#appiumtimezone) instead.

:::note
Most web apps serve localization content based on the computer's IP Address, not the time zone set
Expand Down Expand Up @@ -2165,13 +2218,6 @@ While [Visual Testing](/visual) runs on Sauce Labs servers, the URL gets sent to

See [Visual Testing with WebDriver](/visual/e2e-testing/setup) and [Visual Commands and Options](/visual/e2e-testing/commands-options).

### Unsupported Appium Capabilities

These are currently not supported for real devices:

- `Edit Timezone`: Appium does not provide a capability to edit the timezone of a device in automated testing on real devices.
- See [Virtual Device Capabilities](#virtual-device-capabilities-sauce-specific--optional) for information about timezone capabilities in a virtual device testing.

:::caution Limitations
When running a test on a Virtual Device, be aware that each capability value has a 100 characters limitation. If the value exceeds this limit, it will be truncated, which can lead to further side effects or prevent a job from starting.
:::
45 changes: 39 additions & 6 deletions docs/error-reporting/language-integrations/node.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,26 +51,59 @@ $ npm install @backtrace/node

Add the following code to your application before all other scripts to report node errors to Backtrace.

<Tabs
groupId="applications"
defaultValue="typescript"
values={[
{label: 'Typescript', value: 'typescript'},
{label: 'JavaScript', value: 'javascript'},
]}>

<TabItem value="typescript">

```ts
// Import the BacktraceClient from @backtrace/node with your favorite package manager.
// Import BacktraceClient and BacktraceConfiguration from @backtrace/node
import { BacktraceClient, BacktraceConfiguration } from '@backtrace/node';

// Configure client options
// Configure the submit url to send errors to your project
const options: BacktraceConfiguration = {
// Submission url
// <universe> is the subdomain of your Backtrace instance (<universe>.backtrace.io)
// <universe> is the subdomain of your Backtrace instance (<universe>.sp.backtrace.io)
// <token> can be found in Project Settings/Submission tokens
url: 'https://submit.backtrace.io/<universe>/<token>/json',
};

// Initialize the client with the options
const client = BacktraceClient.initialize(options);

// By default, Backtrace will send errors for Uncaught Exceptions and Unhandled Promise Rejections

// You may send errors manually
client.send(new Error('Something broke!'));
```
</TabItem>
<TabItem value="javascript">

```js
// Import BacktraceClient from @backtrace/node
const { BacktraceClient } = require('@backtrace/node');

// Configure the submit url to send errors to your project
const options = {
// <universe> is the subdomain of your Backtrace instance (<universe>.sp.backtrace.io)
// <token> can be found in Project Settings/Submission tokens
url: 'https://submit.backtrace.io/<universe>/<token>/json',
};

// Initialize the client with the options
const client = BacktraceClient.initialize(options);

// By default, Backtrace will send an error for Uncaught Exceptions and Unhandled Promise Rejections
// By default, Backtrace will send errors for Uncaught Exceptions and Unhandled Promise Rejections

// Manually send an error
// You may send errors manually
client.send(new Error('Something broke!'));
```
</TabItem>
</Tabs>

### Upload source maps

Expand Down
1 change: 1 addition & 0 deletions docs/error-reporting/platform-integrations/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ Integrate Backtrace in your games and apps across languages and platforms with o
<h2>Other Integrations</h2>
<ul>
<li><a href="/error-reporting/platform-integrations/source-map/">Source Maps</a></li>
<li><a href="/error-reporting/platform-integrations/session-replay/">Session Replay</a></li>
<li><a href="/error-reporting/platform-integrations/apache/">Apache Traffic Server</a></li>
<li><a href="/error-reporting/platform-integrations/minidump/">Minidump</a></li>
<li><a href="/error-reporting/platform-integrations/file-attachments/">File Attachments</a></li>
Expand Down
65 changes: 65 additions & 0 deletions docs/error-reporting/platform-integrations/session-replay.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
id: session-replay
title: Session Replay for Web
sidebar_label: Session Replay
description: Configure session replay in your web applications.
---

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import useBaseUrl from '@docusaurus/useBaseUrl';

:::note

Session Replay is currently in beta and only available for web applications. Replays are limited during this phase.

:::

Session Replay allows you to capture a visual recreation of a user session. This simplifies the replication of user errors to determine the root cause. Combining session replays with breadcrumbs and callstacks can give a complete view of the user experience.

## Overview of Session Replay
Session replay works by capturing the DOM state periodically when the user interacts wtih your application. The user session is then recreated when viewing the error in Backtrace. Unlike a video recording, these packages are lightweight and allow for additional processing prior to being sent and stored in Backtrace (e.g. masking PII). Backtrace SDK snips the session around a triggering error so your team can hone in on a specific issue.

The Backtrace implementation makes use of [rrweb](https://github.com/rrweb-io/rrweb/blob/master/guide.md).

## Prerequisites
- A Backtrace account ([log in](https://backtrace.io/login) or sign up for a [free trial license](https://backtrace.io/sign-up)).
- Follow the [JavaScript integration guide](https://docs.saucelabs.com/error-reporting/language-integrations/javascript/).

## Setting Up Session Replay

### Install the package
```bash
npm install @backtrace/session-replay
```
### Integrate the session replay module

Add the following code to the build the session replay module:

```javascript
import { BacktraceClient, BacktraceConfiguration } from '@backtrace/browser';
import { BacktraceSessionReplayModule } from '@backtrace/session-replay';

// Configure client options
const options: BacktraceConfiguration = {
// Name of the website/application
name: 'MyWebPage',
// Version of the website
version: '1.2.3',
// Submission url
// <universe> is the subdomain of your Backtrace instance (<universe>.backtrace.io)
// <token> can be found in Project Settings/Submission tokens
url: 'https://submit.backtrace.io/<universe>/<token>/json',
};

// Initialize the client with the options
// Make sure to add `useModule` with `BacktraceSessionReplayModule`
const client = BacktraceClient.builder(options)
.useModule(
new BacktraceSessionReplayModule({
maxEventCount: 100,
}),
)
.build();
```
Additional options for event limiting, masking, privacy, and more can be found on [Backtrace github](https://github.com/backtrace-labs/backtrace-javascript/tree/main/packages/session-replay).
66 changes: 57 additions & 9 deletions docs/mobile-apps/automated-testing/appium/appium-versions.md
Original file line number Diff line number Diff line change
Expand Up @@ -184,23 +184,28 @@ The following list of custom Appium plugins are supported:
This is a collection of drivers that were released in this version <br />
<ul>
<li>
<a href="https://github.com/appium/appium/releases/tag/appium%402.11.1" target="_blank">
<code>appium</code>: 2.11.1
<a href="https://github.com/appium/appium/releases/tag/appium%402.11.2" target="_blank">
<code>appium</code>: 2.11.2
</a>
</li>
<li>
<a href="https://github.com/appium/appium-flutter-driver/releases/tag/v2.8.0" target="_blank">
<code>appium-flutter-driver</code>: 2.8.0
<a href="https://github.com/appium/appium-flutter-driver/releases/tag/v2.9.0" target="_blank">
<code>appium-flutter-driver</code>: 2.9.0
</a>
</li>
<li>
<a href="https://github.com/appium/appium-uiautomator2-driver/releases/tag/v3.7.0" target="_blank">
<code>appium-uiautomator2-driver</code>: 3.7.0
<a href="https://github.com/appium/appium-uiautomator2-driver/releases/tag/v3.7.4" target="_blank">
<code>appium-uiautomator2-driver</code>: 3.7.4
</a>
</li>
<li>
<a href="https://github.com/appium/appium-xcuitest-driver/releases/tag/v7.21.1" target="_blank">
<code>appium-xcuitest-driver</code>: 7.21.1
<a href="https://github.com/appium/appium-xcuitest-driver/releases/tag/v7.24.6" target="_blank">
<code>appium-xcuitest-driver</code>: 7.24.6
</a>
</li>
<li>
<a href="https://github.com/AppiumTestDistribution/appium-flutter-integration-driver/releases/tag/v1.1.3" target="_blank">
<code>appium-flutter-integration-driver</code>: 1.1.3
</a>
</li>
</ul>
Expand Down Expand Up @@ -233,6 +238,44 @@ The following list of custom Appium plugins are supported:
</ul>
</td>
</tr>
<tr>
<td>
<code>appium2-20240801</code>
</td>
<td>
<span className="sauceGold">July 31th, 2025</span>
</td>
<td>
This is a collection of drivers that were released in August 1st 2024 <br />
<ul>
<li>
<a href="https://github.com/appium/appium/releases/tag/appium%402.11.2" target="_blank">
<code>appium</code>: 2.11.2
</a>
</li>
<li>
<a href="https://github.com/appium/appium-flutter-driver/releases/tag/v2.9.0" target="_blank">
<code>appium-flutter-driver</code>: 2.9.0
</a>
</li>
<li>
<a href="https://github.com/appium/appium-uiautomator2-driver/releases/tag/v3.7.4" target="_blank">
<code>appium-uiautomator2-driver</code>: 3.7.4
</a>
</li>
<li>
<a href="https://github.com/appium/appium-xcuitest-driver/releases/tag/v7.24.6" target="_blank">
<code>appium-xcuitest-driver</code>: 7.24.6
</a>
</li>
<li>
<a href="https://github.com/AppiumTestDistribution/appium-flutter-integration-driver/releases/tag/v1.1.3" target="_blank">
<code>appium-flutter-integration-driver</code>: 1.1.3
</a>
</li>
</ul>
</td>
</tr>
<tr>
<td>
<code>appium2-20240701</code>
Expand Down Expand Up @@ -263,6 +306,11 @@ The following list of custom Appium plugins are supported:
<code>appium-xcuitest-driver</code>: 7.21.1
</a>
</li>
<li>
<a href="https://github.com/AppiumTestDistribution/appium-flutter-integration-driver/releases/tag/1.0.0-beta.14" target="_blank">
<code>appium-flutter-integration-driver</code>: 1.0.0-beta.14
</a>
</li>
</ul>
</td>
</tr>
Expand Down Expand Up @@ -601,7 +649,7 @@ The following list of custom Appium plugins are supported:
<code>2.0.0</code>
</td>
<td>
<span className="sauceGold">July 31st, 2024</span>
<span className="sauceGold">August 31st, 2024</span>
</td>
<td>
This alias for getting the Appium 2 drivers that were installed in the Sauce Labs Real Device Cloud. <br /> The alias <code>2.0.0</code> is a collection of the following drivers <br />
Expand Down
Loading

0 comments on commit 558fc39

Please sign in to comment.