diff --git a/docs/dev/test-configuration-options.md b/docs/dev/test-configuration-options.md
index 760ad81f0c..a520b87739 100644
--- a/docs/dev/test-configuration-options.md
+++ b/docs/dev/test-configuration-options.md
@@ -284,9 +284,12 @@ Always use the latest Selenium version. The Selenium developers are very conscie
| BOOLEAN |
-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.
:::
@@ -840,6 +843,63 @@ Using Appium 2? Prevent `appium:`-prefix repetitiveness and start using [`appium
---
+### `appium:timeZone`
+
+| OPTIONAL | BOOLEAN | Virtual and Real Devices | Android Only |
+
+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`
+
+| OPTIONAL | BOOLEAN | Virtual and Real Devices | iOS Only |
+
+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:
@@ -1556,7 +1616,7 @@ capabilities.setCapability("sauce:options", sauceOptions);
| OPTIONAL | STRING | Real Devices Only | BETA |
-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
@@ -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
@@ -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.
:::
diff --git a/docs/secure-connections/sauce-connect-5/installation.md b/docs/secure-connections/sauce-connect-5/installation.md
index f71302cd17..edc54ea0da 100644
--- a/docs/secure-connections/sauce-connect-5/installation.md
+++ b/docs/secure-connections/sauce-connect-5/installation.md
@@ -17,7 +17,7 @@ Visit the following pages for installation instructions for your platform:
If you prefer to do custom installation, you can download Sauce Connect binaries from the following links.
-SHA256 checksums are available [here](https://saucelabs.com/downloads/sauce-connect/5.1.1/checksums).
+SHA256 checksums are available [here](https://saucelabs.com/downloads/sauce-connect/5.1.2/checksums).
diff --git a/docs/secure-connections/sauce-connect-5/installation/linux.md b/docs/secure-connections/sauce-connect-5/installation/linux.md
index d643955842..3ad17f5bed 100644
--- a/docs/secure-connections/sauce-connect-5/installation/linux.md
+++ b/docs/secure-connections/sauce-connect-5/installation/linux.md
@@ -24,7 +24,7 @@ defaultValue="ARM64"
```bash
-curl -L -o sauce-connect.deb https://saucelabs.com/downloads/sauce-connect/5.1.1/sauce-connect_5.1.1.linux_arm64.deb
+curl -L -o sauce-connect.deb https://saucelabs.com/downloads/sauce-connect/5.1.2/sauce-connect_5.1.2.linux_arm64.deb
sudo dpkg -i sauce-connect.deb
```
@@ -32,7 +32,7 @@ sudo dpkg -i sauce-connect.deb
```bash
-curl -L -o sauce-connect.deb https://saucelabs.com/downloads/sauce-connect/5.1.1/sauce-connect_5.1.1.linux_amd64.deb
+curl -L -o sauce-connect.deb https://saucelabs.com/downloads/sauce-connect/5.1.2/sauce-connect_5.1.2.linux_amd64.deb
sudo dpkg -i sauce-connect.deb
```
@@ -81,14 +81,14 @@ defaultValue="ARM64"
```bash
-sudo rpm -i https://saucelabs.com/downloads/sauce-connect/5.1.1/sauce-connect-5.1.1_linux.aarch64.rpm
+sudo rpm -i https://saucelabs.com/downloads/sauce-connect/5.1.2/sauce-connect-5.1.2_linux.aarch64.rpm
```
```bash
-sudo rpm -i https://saucelabs.com/downloads/sauce-connect/5.1.1/sauce-connect-5.1.1_linux.x86_64.rpm
+sudo rpm -i https://saucelabs.com/downloads/sauce-connect/5.1.2/sauce-connect-5.1.2_linux.x86_64.rpm
```
@@ -132,7 +132,7 @@ defaultValue="ARM64"
```bash
-curl -L -o sauce-connect.tar.gz https://saucelabs.com/downloads/sauce-connect/5.1.1/sauce-connect-5.1.1_linux.aarch64.tar.gz
+curl -L -o sauce-connect.tar.gz https://saucelabs.com/downloads/sauce-connect/5.1.2/sauce-connect-5.1.2_linux.aarch64.tar.gz
sudo mkdir -p /opt/sauce-connect
sudo tar -C /opt/sauce-connect -xzf sauce-connect.tar.gz
```
@@ -141,7 +141,7 @@ sudo tar -C /opt/sauce-connect -xzf sauce-connect.tar.gz
```bash
-curl -L -o sauce-connect.tar.gz https://saucelabs.com/downloads/sauce-connect/5.1.1/sauce-connect-5.1.1_linux.x86_64.tar.gz
+curl -L -o sauce-connect.tar.gz https://saucelabs.com/downloads/sauce-connect/5.1.2/sauce-connect-5.1.2_linux.x86_64.tar.gz
sudo mkdir -p /opt/sauce-connect
sudo tar -C /opt/sauce-connect -xzf sauce-connect.tar.gz
```
diff --git a/docs/secure-connections/sauce-connect-5/installation/macos.md b/docs/secure-connections/sauce-connect-5/installation/macos.md
index 6aa75331e5..abae36303e 100644
--- a/docs/secure-connections/sauce-connect-5/installation/macos.md
+++ b/docs/secure-connections/sauce-connect-5/installation/macos.md
@@ -41,7 +41,7 @@ Sauce Connect provides `.zip` package with a signed binary that can be used on a
### Unpack the zip file
```bash
-curl -L -o sauce-connect.zip https://saucelabs.com/downloads/sauce-connect/5.1.1/sauce-connect-5.1.1_darwin.all.zip
+curl -L -o sauce-connect.zip https://saucelabs.com/downloads/sauce-connect/5.1.2/sauce-connect-5.1.2_darwin.all.zip
sudo mkdir -p /opt/sauce-connect
sudo unzip -d /opt/sauce-connect sauce-connect.zip
```
diff --git a/docs/secure-connections/sauce-connect-5/installation/windows.md b/docs/secure-connections/sauce-connect-5/installation/windows.md
index 115ae58ba1..a5cdacb00c 100644
--- a/docs/secure-connections/sauce-connect-5/installation/windows.md
+++ b/docs/secure-connections/sauce-connect-5/installation/windows.md
@@ -20,7 +20,7 @@ defaultValue="ARM64"
```bash
mkdir C:\sauce-connect
-Invoke-WebRequest -Uri https://saucelabs.com/downloads/sauce-connect/5.1.1/sauce-connect-5.1.1_windows.aarch64.zip -OutFile sauce-connect.zip
+Invoke-WebRequest -Uri https://saucelabs.com/downloads/sauce-connect/5.1.2/sauce-connect-5.1.2_windows.aarch64.zip -OutFile sauce-connect.zip
Expand-Archive -Path sauce-connect.zip -DestinationPath C:\sauce-connect
```
@@ -29,7 +29,7 @@ Expand-Archive -Path sauce-connect.zip -DestinationPath C:\sauce-connect
```bash
mkdir C:\sauce-connect
-Invoke-WebRequest -Uri https://saucelabs.com/downloads/sauce-connect/5.1.1/sauce-connect-5.1.1_windows.x86_64.zip -OutFile sauce-connect.zip
+Invoke-WebRequest -Uri https://saucelabs.com/downloads/sauce-connect/5.1.2/sauce-connect-5.1.2_windows.x86_64.zip -OutFile sauce-connect.zip
Expand-Archive -Path sauce-connect.zip -DestinationPath C:\sauce-connect
```
diff --git a/docs/secure-connections/sauce-connect-5/logging.md b/docs/secure-connections/sauce-connect-5/logging.md
index cdd8d04c80..bf8455dd33 100644
--- a/docs/secure-connections/sauce-connect-5/logging.md
+++ b/docs/secure-connections/sauce-connect-5/logging.md
@@ -18,9 +18,164 @@ Logs are automatically rotated when running Sauce Connect Proxy 5 as a Linux Sys
For other setups, use the `logrotate` utility.
:::note
-The logrotate integration in Linux and macOS will be available in upcoming **Sauce Connect Proxy 5.2**.
+The logrotate integration in Linux and macOS is available in **Sauce Connect Proxy 5.1.2** and later.
:::
+### Linux
+
+When running as a Systemd service, logs are stored in `/var/log/sauce-connect` and rotated automatically.
+
+For standalone runs, configure logrotate as follows:
+
+1. Create a directory for log files:
+
+ First, create a directory for Sauce Connect log files or use existing one.
+ The directory needs to be writable by the user running Sauce Connect.
+
+ ```bash
+ mkdir -p /path/to/sauce-connect/logs
+ ```
+
+1. Adjust Sauce Connect configuration to write logs to the log file:
+
+ Command line:
+
+ ```bash
+ sc run ... --log-file /path/to/sauce-connect/logs/sc.log
+ ```
+
+ Configuration file:
+
+ ```yaml
+ log-file: /path/to/sauce-connect/logs/sc.log
+ ```
+
+1. Configure logrotate:
+
+ Create a logrotate configuration file `/etc/logrotate.d/sauce-connect` with the following content:
+
+ ```
+ /path/to/sauce-connect/logs/sc.log {
+ size 100M
+ rotate 10
+ compress
+ maxage 30
+ postrotate
+ /usr/bin/killall -HUP sc
+ endscript
+ }
+ ```
+
+ This configuration rotates the log file when it reaches 100MB, keeps 10 rotated files, compresses rotated files, and deletes files older than 30 days.
+ You can adjust these values to suit your needs.
+
+ For information on available logrotate config file options, check [`man logrotate`](https://linux.die.net/man/8/logrotate).
+
+ You can test the configuration with the following command.
+
+ ```bash
+ logrotate -d /etc/logrotate.d/sauce-connect
+ ```
+
+### MacOS
+
+1. Install logrotate:
+
+ First, ensure logrotate is installed via Homebrew.
+
+ ```bash
+ brew install logrotate
+ ```
+
+1. Create a directory for log files:
+
+ Create a directory for log Sauce Connect files or use existing one.
+ The directory needs to be writable by the user running Sauce Connect.
+
+ ```bash
+ mkdir -p /path/to/sauce-connect/logs
+ ```
+
+1. Adjust Sauce Connect configuration to write logs to the log file:
+
+ Command line:
+
+ ```bash
+ sc run ... --log-file /path/to/sauce-connect/logs/sc.log
+ ```
+
+ Configuration file:
+
+ ```yaml
+ log-file: /path/to/sauce-connect/logs/sc.log
+ ```
+
+1. Configure logrotate:
+
+ Create logrotate configration directory.
+
+ ```bash
+ sudo mkdir -p /usr/local/etc/logrotate.d
+ ```
+
+ Create a logrotate configuration file `/usr/local/etc/logrotate.d/sauce-connect` with the following content:
+
+ ```
+ /path/to/sauce-connect/logs/sc.log {
+ size 100M
+ rotate 10
+ compress
+ maxage 30
+ postrotate
+ /usr/bin/killall -HUP sc
+ endscript
+ }
+ ```
+
+ This configuration rotates the log file when it reaches 100MB, keeps 10 rotated files, compresses rotated files, and deletes files older than 30 days.
+ You can adjust these values to suit your needs.
+
+
+ For information on available logrotate config file options, check [`man logrotate`](https://linux.die.net/man/8/logrotate).
+
+ You can test the configuration with the following command.
+
+ ```bash
+ logrotate -d /usr/local/etc/logrotate.d/sauce-connect
+ ```
+
+1. Create run logrotate script:
+
+ Create `run_logrotate.sh` script with the following content:
+
+ ```bash
+ #!/bin/sh
+ /opt/homebrew/sbin/logrotate -s /opt/homebrew/var/run/logrotate.status /usr/local/etc/logrotate.d/*
+ ```
+
+ Set execute permissions for the script.
+
+ ```bash
+ chmod 755 run_logrotate.sh
+ ```
+
+1. Set up periodic job:
+
+ The `periodic` utility runs scripts located in specific directories at daily, weekly, or monthly intervals.
+ Place your script in `/etc/periodic/daily` for daily execution.
+
+ ```bash
+ sudo cp run_logrotate.sh /etc/periodic/daily/500.logrotate
+ ```
+
+ Manually run the script to test it.
+
+ ```bash
+ sudo periodic daily
+ ```
+
+ Check the logs or the logrotate results to ensure it is functioning as expected.
+
### Windows
Open Terminal application to run the following commands.
diff --git a/docs/visual-testing/diffing-engines.md b/docs/visual-testing/diffing-engines.md
new file mode 100644
index 0000000000..83d4d4e5ae
--- /dev/null
+++ b/docs/visual-testing/diffing-engines.md
@@ -0,0 +1,34 @@
+---
+id: diffing-engines
+title: Diffing Engines
+sidebar_label: Diffing Engines
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+import useBaseUrl from '@docusaurus/useBaseUrl';
+
+Sauce Visual Testing supports the various diffing engines, which are described below.
+Our SDKs give you the ability to select a specific engine for each snapshot, if you don't want to rely on the default engine.
+
+
+## Balanced
+
+The Balanced engine will soon be our default engine.
+It support all features like selective diffing and provides great all around performance.
+It is able to detect single pixel changes while ignoring barely visible rendering artifacts such as anti-aliasing or small color inaccuracies.
+
+
+## Simple
+
+Our first engine. It is similar to the Balanced engine, but we specifically developed the Balanced engine to address some corner cases that the Simple engine didn't handle well.
+We will support the Simple engine for the forseeable future, but we won't backport new features to it.
+In particular, selective diffing is not available for the Simple engine.
+
+We recommend using the Balanced engine instead of the Simple engine.
+
+
+## (Experimental)
+
+We have am Experimental engine that is constantly changing and used for showcasing and troubleshooting.
+Please don't use this engine in production.
diff --git a/docs/visual-testing/mobile-native-testing.md b/docs/visual-testing/mobile-native-testing.md
new file mode 100644
index 0000000000..815c0d534c
--- /dev/null
+++ b/docs/visual-testing/mobile-native-testing.md
@@ -0,0 +1,31 @@
+---
+id: mobile-native-testing
+title: Mobile Native Testing (BETA)
+sidebar_label: Mobile Native Testing (BETA)
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+import useBaseUrl from '@docusaurus/useBaseUrl';
+
+In addition to website testing, Sauce Visual also supports testing of native mobile apps for Android and iOS with Appium.
+
+In principal, the process is the same as writing a visual test for a website, except that instead of a website, an app needs to be specified in the capabilities.
+
+Check out [our examples](https://github.com/saucelabs/visual-examples/) to see it in action.
+
+
+## Best Practices
+
+When writing a visual test for mobile apps, we recommend the following
+- Explicitly control "dark mode" / "light mode" before taking visual snapshots, so snapshots are either always taken in dark or light mode, but not mixed.
+- Explicitly specify a single device and OS version for testing. You may run the same test suite on various devices, but don't use wildcards in device names (dynamic device allocation).
+
+
+## Limitations
+
+The following features are not available for mobile app testing:
+- Full page screenshots
+- DOM capture and inspection
+- [Selective diffing](./selective-diffing.md)
+
diff --git a/docs/visual-testing/selective-diffing.md b/docs/visual-testing/selective-diffing.md
index 92d345e20b..e472bf500d 100644
--- a/docs/visual-testing/selective-diffing.md
+++ b/docs/visual-testing/selective-diffing.md
@@ -1,6 +1,6 @@
---
id: selective-diffing
-title: Sauce Labs Visual Testing
+title: Selective Diffing
sidebar_label: Selective Diffing
---
@@ -8,8 +8,6 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import useBaseUrl from '@docusaurus/useBaseUrl';
-## Selective Diffing
-
Sauce Visual allows you to ignore only certain types of changes.
We support the following change types:
- **Content:** The text, image or other content changes.
diff --git a/sidebars.js b/sidebars.js
index a6c1cb680f..b27c841be1 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -1723,6 +1723,8 @@ module.exports = {
},
'visual-testing/cli',
'visual-testing/selective-diffing',
+ 'visual-testing/mobile-native-testing',
+ 'visual-testing/diffing-engines',
'visual-testing/faq',
],
},