appium-xcuitest-driver 12.13.0 → 12.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/build/lib/device/wda-host-ops.js +8 -5
- package/build/lib/device/wda-host-ops.js.map +1 -1
- package/lib/device/wda-host-ops.ts +8 -5
- package/node_modules/appium-ios-tuntap/CHANGELOG.md +6 -0
- package/node_modules/appium-ios-tuntap/package.json +1 -1
- package/node_modules/appium-ios-tuntap/prebuilds/darwin-arm64/appium-ios-tuntap.node +0 -0
- package/node_modules/appium-ios-tuntap/prebuilds/linux-arm64/appium-ios-tuntap.node +0 -0
- package/node_modules/appium-ios-tuntap/prebuilds/linux-x64/appium-ios-tuntap.node +0 -0
- package/node_modules/appium-ios-tuntap/prebuilds/win32-x64/appium-ios-tuntap.node +0 -0
- package/node_modules/appium-ios-tuntap/src/native/tunnel_ssl.cc +22 -9
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [12.13.1](https://github.com/appium/appium-xcuitest-driver/compare/v12.13.0...v12.13.1) (2026-09-20)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* **opts:** pass `ActivateSuspended: true` to host opts for backgrounding WDA ([#2980](https://github.com/appium/appium-xcuitest-driver/issues/2980)) ([78361a2](https://github.com/appium/appium-xcuitest-driver/commit/78361a2cad2e66a34f64272113f519a35ce24407))
|
|
6
|
+
|
|
1
7
|
## [12.13.0](https://github.com/appium/appium-xcuitest-driver/compare/v12.12.6...v12.13.0) (2026-09-20)
|
|
2
8
|
|
|
3
9
|
### Features
|
|
@@ -105,11 +105,13 @@ function createSimulatorHostOps(driver) {
|
|
|
105
105
|
};
|
|
106
106
|
}
|
|
107
107
|
/**
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
108
|
+
* An XCTest runner started in the foreground has to press the Home button to background itself
|
|
109
|
+
* before running UI tests. With the Xcode 27 DDI/XCTest stack that synthesized press is ignored on
|
|
110
|
+
* older iOS versions, so the runner exits with "Failed to background test runner" and never starts
|
|
111
|
+
* its HTTP server (see appium/appium#22636 and #2978). RemoteXPC's process control launches the
|
|
112
|
+
* runner directly in the background, like Xcode does, which skips that step. `devicectl` always
|
|
113
|
+
* brings the runner to the foreground, so it is no longer a reliable launch fallback on
|
|
114
|
+
* iOS/tvOS 27+. It remains a reasonable fallback for older platforms.
|
|
113
115
|
*/
|
|
114
116
|
function createRealDevicePreinstalledHostOps(driver) {
|
|
115
117
|
return {
|
|
@@ -121,6 +123,7 @@ function createRealDevicePreinstalledHostOps(driver) {
|
|
|
121
123
|
bundleId,
|
|
122
124
|
environment: stringifyLaunchEnvironment(env),
|
|
123
125
|
killExisting: true,
|
|
126
|
+
extraOptions: { ActivateSuspended: true },
|
|
124
127
|
});
|
|
125
128
|
}
|
|
126
129
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wda-host-ops.js","sourceRoot":"","sources":["../../../lib/device/wda-host-ops.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"wda-host-ops.js","sourceRoot":"","sources":["../../../lib/device/wda-host-ops.ts"],"names":[],"mappings":"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"}
|
|
@@ -161,11 +161,13 @@ function createSimulatorHostOps(driver: XCUITestDriver): SimulatorHostOps {
|
|
|
161
161
|
}
|
|
162
162
|
|
|
163
163
|
/**
|
|
164
|
-
*
|
|
165
|
-
*
|
|
166
|
-
*
|
|
167
|
-
*
|
|
168
|
-
*
|
|
164
|
+
* An XCTest runner started in the foreground has to press the Home button to background itself
|
|
165
|
+
* before running UI tests. With the Xcode 27 DDI/XCTest stack that synthesized press is ignored on
|
|
166
|
+
* older iOS versions, so the runner exits with "Failed to background test runner" and never starts
|
|
167
|
+
* its HTTP server (see appium/appium#22636 and #2978). RemoteXPC's process control launches the
|
|
168
|
+
* runner directly in the background, like Xcode does, which skips that step. `devicectl` always
|
|
169
|
+
* brings the runner to the foreground, so it is no longer a reliable launch fallback on
|
|
170
|
+
* iOS/tvOS 27+. It remains a reasonable fallback for older platforms.
|
|
169
171
|
*/
|
|
170
172
|
function createRealDevicePreinstalledHostOps(driver: XCUITestDriver): RealDevicePreinstalledHostOps {
|
|
171
173
|
return {
|
|
@@ -179,6 +181,7 @@ function createRealDevicePreinstalledHostOps(driver: XCUITestDriver): RealDevice
|
|
|
179
181
|
bundleId,
|
|
180
182
|
environment: stringifyLaunchEnvironment(env),
|
|
181
183
|
killExisting: true,
|
|
184
|
+
extraOptions: {ActivateSuspended: true},
|
|
182
185
|
});
|
|
183
186
|
} finally {
|
|
184
187
|
await dvt.dvtService.close();
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [2.0.12](https://github.com/appium/appium-ios-tuntap/compare/v2.0.11...v2.0.12) (2026-09-20)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* report a peer hangup during TLS connect as a closed connection, not a timeout ([#113](https://github.com/appium/appium-ios-tuntap/issues/113)) ([f489d18](https://github.com/appium/appium-ios-tuntap/commit/f489d18c4b65f7104e17f3e6d82b10ff094943c5))
|
|
6
|
+
|
|
1
7
|
## [2.0.11](https://github.com/appium/appium-ios-tuntap/compare/v2.0.10...v2.0.11) (2026-09-18)
|
|
2
8
|
|
|
3
9
|
### Bug Fixes
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -119,7 +119,9 @@ std::string DescribeConnectFailure(int ssl_error) {
|
|
|
119
119
|
return "SSL_connect failed: ssl_error=" + std::to_string(ssl_error) + " system_error=" + std::to_string(system_error);
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
-
|
|
122
|
+
enum class PollConnectResult : std::uint8_t { Ready, Timeout, Hangup };
|
|
123
|
+
|
|
124
|
+
PollConnectResult PollConnectFd(int fd, short events, std::chrono::steady_clock::time_point deadline) {
|
|
123
125
|
#ifdef _WIN32
|
|
124
126
|
WSAPOLLFD pfd{};
|
|
125
127
|
pfd.fd = static_cast<SOCKET>(fd);
|
|
@@ -132,7 +134,7 @@ bool PollConnectFd(int fd, short events, std::chrono::steady_clock::time_point d
|
|
|
132
134
|
for (;;) {
|
|
133
135
|
const Clock::time_point now = Clock::now();
|
|
134
136
|
if (now >= deadline) {
|
|
135
|
-
return
|
|
137
|
+
return PollConnectResult::Timeout;
|
|
136
138
|
}
|
|
137
139
|
const auto remaining_ms = std::chrono::duration_cast<std::chrono::milliseconds>(deadline - now).count();
|
|
138
140
|
const int timeout_ms = remaining_ms > 5000 ? 5000 : static_cast<int>(remaining_ms);
|
|
@@ -147,9 +149,9 @@ bool PollConnectFd(int fd, short events, std::chrono::steady_clock::time_point d
|
|
|
147
149
|
| POLLNVAL
|
|
148
150
|
#endif
|
|
149
151
|
)) != 0) {
|
|
150
|
-
return
|
|
152
|
+
return PollConnectResult::Hangup;
|
|
151
153
|
}
|
|
152
|
-
return (pfd.revents & events) != 0;
|
|
154
|
+
return (pfd.revents & events) != 0 ? PollConnectResult::Ready : PollConnectResult::Timeout;
|
|
153
155
|
}
|
|
154
156
|
if (rc == 0) {
|
|
155
157
|
continue;
|
|
@@ -161,8 +163,21 @@ bool PollConnectFd(int fd, short events, std::chrono::steady_clock::time_point d
|
|
|
161
163
|
#endif
|
|
162
164
|
continue;
|
|
163
165
|
}
|
|
164
|
-
return
|
|
166
|
+
return PollConnectResult::Timeout;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/** Waits for `events` during SSL_connect; on failure sets `error` naming a timeout or a dropped peer. */
|
|
171
|
+
bool WaitForConnectIo(int fd, short events, const char* direction, std::chrono::steady_clock::time_point deadline,
|
|
172
|
+
std::string& error) {
|
|
173
|
+
const PollConnectResult result = PollConnectFd(fd, events, deadline);
|
|
174
|
+
if (result == PollConnectResult::Ready) {
|
|
175
|
+
return true;
|
|
165
176
|
}
|
|
177
|
+
error = result == PollConnectResult::Hangup
|
|
178
|
+
? std::string("SSL_connect failed: connection closed by peer while waiting to ") + direction
|
|
179
|
+
: std::string("SSL_connect timed out waiting to ") + direction;
|
|
180
|
+
return false;
|
|
166
181
|
}
|
|
167
182
|
|
|
168
183
|
} // namespace
|
|
@@ -231,15 +246,13 @@ bool TunnelSslClient::ConnectTls(int timeout_ms, std::string& error) {
|
|
|
231
246
|
}
|
|
232
247
|
const int err = SSL_get_error(ssl_, rc);
|
|
233
248
|
if (err == SSL_ERROR_WANT_READ) {
|
|
234
|
-
if (!
|
|
235
|
-
error = "SSL_connect timed out waiting to read";
|
|
249
|
+
if (!WaitForConnectIo(owned_fd_, kPollIn, "read", connect_deadline, error)) {
|
|
236
250
|
return false;
|
|
237
251
|
}
|
|
238
252
|
continue;
|
|
239
253
|
}
|
|
240
254
|
if (err == SSL_ERROR_WANT_WRITE) {
|
|
241
|
-
if (!
|
|
242
|
-
error = "SSL_connect timed out waiting to write";
|
|
255
|
+
if (!WaitForConnectIo(owned_fd_, kPollOut, "write", connect_deadline, error)) {
|
|
243
256
|
return false;
|
|
244
257
|
}
|
|
245
258
|
continue;
|