Compare commits

...
Author SHA1 Message Date
Jonathan Lipps 319f7289e7 Publish
- appium@2.0.0-beta.30
 - @appium/base-driver@8.4.2
 - @appium/doctor@1.16.14
 - @appium/eslint-config-appium@5.0.4
 - @appium/fake-driver@3.2.9
 - @appium/gulp-plugins@6.0.5
 - @appium/opencv@1.0.4
 - @appium/schema@0.0.2
 - @appium/support@2.57.1
 - @appium/test-support@1.3.15
 - @appium/types@0.1.1
2022-04-12 09:11:41 -07:00
Jonathan Lipps 42c83f8044 fix(appium,base-driver,doctor,docutils,eslint-config-appium,fake-driver,gulp-plugins,opencv,schema,support,test-support,types): make sure types are cleaned before release 2022-04-12 09:08:34 -07:00
Jonathan Lipps 0f32dad275 Publish
- appium@2.0.0-beta.29
 - @appium/base-driver@8.4.1
 - @appium/doctor@1.16.13
 - @appium/fake-driver@3.2.8
 - @appium/gulp-plugins@6.0.4
2022-04-12 08:49:03 -07:00
Jonathan Lipps 04d2b385d2 chore(appium-monorepo): reorder clean scripts so reinstall works
cc @boneskull see my comment on previous commit
2022-04-12 08:46:51 -07:00
Renovate Bot d0f29bda28 chore(): update dependency webdriverio to v7.19.4 2022-04-12 12:41:26 +00:00
Mykola Mokhnach 46b7df3f77 chore(base-driver): Only parse session id when necessary 2022-04-11 08:24:55 +02:00
Mykola Mokhnach ad3b4b2c96 fix(base-driver): isErrorType import 2022-04-11 08:16:42 +02:00
Mykola Mokhnach 5d2156a06b fix(base-driver): Make sure proxyReqRes helper never throws any exceptions (#16742) 2022-04-11 07:59:30 +02:00
Renovate Bot 67c2c3b18f chore(gulp-plugins): update dependency yargs to v17.4.1 2022-04-10 12:58:57 +00:00
Renovate Bot 20daee6a24 chore(base-driver): update dependency lru-cache to v7.8.1 2022-04-10 10:46:22 +00:00
Mykola Mokhnach ff3b290c77 chore(base-driver): Update ws dependency (#16739) 2022-04-09 22:56:01 +02:00
Renovate Bot ed89b590e1 chore(base-driver): update dependency lru-cache to v7.8.0 2022-04-09 01:42:50 +00:00
Mykola Mokhnach f8a51443e4 fix(appium): Properly detect if a command is a session command (#16737) 2022-04-08 21:52:36 +02:00
27 changed files with 247 additions and 87 deletions
+4 -3
View File
@@ -30,9 +30,9 @@
"build:types": "tsc -b",
"clean": "run-s clean:*",
"clean:distfiles": "npx rimraf \"packages/*/build\"",
"clean:monorepo": "npx rimraf node_modules package-lock.json",
"clean:packages": "lerna clean -y && npx rimraf \"packages/*/package-lock.json\"",
"clean:types": "tsc -b --clean",
"clean:monorepo": "npx rimraf node_modules package-lock.json",
"dev": "lerna run --parallel --prefix --concurrency=8 dev",
"dev:types": "tsc -b --watch",
"doctor": "node ./packages/doctor",
@@ -44,7 +44,8 @@
"lint:fix": "npm run lint -- --fix",
"precommit-lint": "lint-staged",
"precommit-msg": "echo 'Pre-commit checks...'",
"prepublishOnly": "npm run build",
"prepublishOnly": "tsc -b --clean && npm run build",
"preversion": "tsc -b --clean && npm run build",
"reinstall": "npm run clean && npm install",
"start": "appium",
"sync-pkgs": "run-p sync-pkgs:*",
@@ -173,7 +174,7 @@
"type-fest": "2.12.2",
"typescript": "4.6.3",
"validate.js": "0.13.1",
"webdriverio": "7.19.3",
"webdriverio": "7.19.4",
"yaml-js": "0.3.1"
},
"engines": {
+19
View File
@@ -3,6 +3,25 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
# [2.0.0-beta.30](https://github.com/appium/appium/compare/appium@2.0.0-beta.29...appium@2.0.0-beta.30) (2022-04-12)
**Note:** Version bump only for package appium
# [2.0.0-beta.29](https://github.com/appium/appium/compare/appium@2.0.0-beta.28...appium@2.0.0-beta.29) (2022-04-12)
### Bug Fixes
* **appium:** Properly detect if a command is a session command ([#16737](https://github.com/appium/appium/issues/16737)) ([f8a5144](https://github.com/appium/appium/commit/f8a51443e490d9a373778499bfc440e8464ca2ed))
# [2.0.0-beta.28](https://github.com/appium/appium/compare/appium@2.0.0-beta.27...appium@2.0.0-beta.28) (2022-04-07)
+13 -20
View File
@@ -115,7 +115,6 @@ class AppiumDriver extends DriverCore {
return this._log;
}
/**
* Cancel commands queueing for the umbrella Appium driver
*/
@@ -138,9 +137,8 @@ class AppiumDriver extends DriverCore {
};
}
async getSessions () {
const sessions = await sessionsListGuard.acquire(AppiumDriver.name, () => this.sessions);
return _.toPairs(sessions)
async getSessions () { // eslint-disable-line require-await
return _.toPairs(this.sessions)
.map(([id, driver]) => ({id, capabilities: driver.caps}));
}
@@ -300,9 +298,7 @@ class AppiumDriver extends DriverCore {
[...runningDriversData, ...otherPendingDriversData]
);
protocol = driverInstance.protocol;
await sessionsListGuard.acquire(AppiumDriver.name, () => {
this.sessions[innerSessionId] = driverInstance;
});
this.sessions[innerSessionId] = driverInstance;
} finally {
await pendingDriversGuard.acquire(AppiumDriver.name, () => {
_.pull(this.pendingDrivers[InnerDriver.name], driverInstance);
@@ -377,16 +373,14 @@ class AppiumDriver extends DriverCore {
* @param {import('../types/extension').DriverClass} InnerDriver
* @returns {Promise<DriverData[]>}}
*/
async curSessionDataForDriver (InnerDriver) {
const sessions = await sessionsListGuard.acquire(AppiumDriver.name, () => this.sessions);
const data = _.compact(_.values(sessions)
.filter((s) => s.constructor.name === InnerDriver.name)
.map((s) => s.driverData));
for (let datum of data) {
async curSessionDataForDriver (InnerDriver) { // eslint-disable-line require-await
const data = _.compact(_.values(this.sessions)
.filter((s) => s.constructor.name === InnerDriver.name)
.map((s) => s.driverData));
for (const datum of data) {
if (!datum) {
throw new Error(`Problem getting session data for driver type ` +
`${InnerDriver.name}; does it implement 'get ` +
`driverData'?`);
`${InnerDriver.name}; does it implement 'get driverData'?`);
}
}
return data;
@@ -522,9 +516,8 @@ class AppiumDriver extends DriverCore {
// cases with plugin handling.
const isGetStatus = cmd === GET_STATUS_COMMAND;
const isDeleteSession = cmd === DELETE_SESSION_COMMAND;
const isUmbrellaCmd = !isGetStatus && isAppiumDriverCommand(cmd);
const isSessionCmd = !isUmbrellaCmd || isDeleteSession;
const isUmbrellaCmd = isAppiumDriverCommand(cmd);
const isSessionCmd = isSessionCommand(cmd);
// if a plugin override proxying for this command and that is why we are here instead of just
// letting the protocol proxy the command entirely, determine that, get the request object for
@@ -544,7 +537,7 @@ class AppiumDriver extends DriverCore {
let driver = this;
if (isSessionCmd) {
sessionId = _.last(args);
dstSession = await sessionsListGuard.acquire(AppiumDriver.name, () => this.sessions[sessionId]);
dstSession = this.sessions[sessionId];
if (!dstSession) {
throw new Error(`The session with id '${sessionId}' does not exist`);
}
@@ -717,7 +710,7 @@ class AppiumDriver extends DriverCore {
// help decide which commands should be proxied to sub-drivers and which
// should be handled by this, our umbrella driver
function isAppiumDriverCommand (cmd) {
return !isSessionCommand(cmd) || cmd === 'deleteSession';
return !isSessionCommand(cmd) || cmd === DELETE_SESSION_COMMAND;
}
/**
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "appium",
"version": "2.0.0-beta.28",
"version": "2.0.0-beta.30",
"description": "Automation for Apps.",
"keywords": [
"automation",
+20
View File
@@ -3,6 +3,26 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [8.4.2](https://github.com/appium/appium/compare/@appium/base-driver@8.4.1...@appium/base-driver@8.4.2) (2022-04-12)
**Note:** Version bump only for package @appium/base-driver
## [8.4.1](https://github.com/appium/appium/compare/@appium/base-driver@8.4.0...@appium/base-driver@8.4.1) (2022-04-12)
### Bug Fixes
* **base-driver:** isErrorType import ([ad3b4b2](https://github.com/appium/appium/commit/ad3b4b2c9676623a5eeb92e0beb510ec181fbcf8))
* **base-driver:** Make sure proxyReqRes helper never throws any exceptions ([#16742](https://github.com/appium/appium/issues/16742)) ([5d2156a](https://github.com/appium/appium/commit/5d2156a06bcf621116db0adbedce431d7c18fca7))
# [8.4.0](https://github.com/appium/appium/compare/@appium/base-driver@8.3.1...@appium/base-driver@8.4.0) (2022-04-07)
+35 -32
View File
@@ -1,5 +1,6 @@
import _ from 'lodash';
import url from 'url';
import { URL } from 'url';
import B from 'bluebird';
const DEFAULT_WS_PATHNAME_PREFIX = '/ws';
@@ -18,29 +19,28 @@ const DEFAULT_WS_PATHNAME_PREFIX = '/ws';
* on how to configure the handler properly.
*/
async function addWebSocketHandler (handlerPathname, handlerServer) { // eslint-disable-line require-await
let isUpgradeListenerAssigned = true;
if (_.isUndefined(this.webSocketsMapping)) {
this.webSocketsMapping = {};
isUpgradeListenerAssigned = false;
// https://github.com/websockets/ws/pull/885
this.on('upgrade', (request, socket, head) => {
let currentPathname;
try {
currentPathname = (new URL(request.url)).pathname;
} catch (ign) {
currentPathname = request.url;
}
for (const [pathname, wsServer] of _.toPairs(this.webSocketsMapping)) {
if (currentPathname === pathname) {
wsServer.handleUpgrade(request, socket, head, (ws) => {
wsServer.emit('connection', ws, request);
});
return;
}
}
socket.destroy();
});
}
this.webSocketsMapping[handlerPathname] = handlerServer;
if (isUpgradeListenerAssigned) {
return;
}
// https://github.com/websockets/ws/pull/885
this.on('upgrade', (request, socket, head) => {
const currentPathname = url.parse(request.url).pathname;
for (const [pathname, wsServer] of _.toPairs(this.webSocketsMapping)) {
if (currentPathname === pathname) {
wsServer.handleUpgrade(request, socket, head, (ws) => {
wsServer.emit('connection', ws, request);
});
return;
}
}
socket.destroy();
});
}
/**
@@ -59,13 +59,12 @@ async function getWebSocketHandlers (keysFilter = null) { // eslint-disable-line
return {};
}
let result = {};
for (const [pathname, wsServer] of _.toPairs(this.webSocketsMapping)) {
return _.toPairs(this.webSocketsMapping).reduce((acc, [pathname, wsServer]) => {
if (!_.isString(keysFilter) || pathname.includes(keysFilter)) {
result[pathname] = wsServer;
acc[pathname] = wsServer;
}
}
return result;
return acc;
}, {});
}
/**
@@ -79,12 +78,16 @@ async function getWebSocketHandlers (keysFilter = null) { // eslint-disable-line
* @returns {boolean} true if the handlerPathname was found and deleted
*/
async function removeWebSocketHandler (handlerPathname) { // eslint-disable-line require-await
if (!this.webSocketsMapping || !this.webSocketsMapping[handlerPathname]) {
const wsServer = this.webSocketsMapping?.[handlerPathname];
if (!wsServer) {
return false;
}
try {
this.webSocketsMapping[handlerPathname].close();
wsServer.close();
for (const client of (wsServer.clients || [])) {
client.terminate();
}
return true;
} catch (ign) {
// ignore
@@ -106,11 +109,11 @@ async function removeAllWebSocketHandlers () {
return false;
}
let result = false;
for (const pathname of _.keys(this.webSocketsMapping)) {
result = result || await this.removeWebSocketHandler(pathname);
}
return result;
return _.some(
await B.all(
_.keys(this.webSocketsMapping).map((pathname) => this.removeWebSocketHandler(pathname))
)
);
}
export {
+26 -6
View File
@@ -3,7 +3,8 @@ import { logger, util } from '@appium/support';
import axios from 'axios';
import { getSummaryByCode } from '../jsonwp-status/status';
import {
errors, isErrorType, errorFromMJSONWPStatusCode, errorFromW3CJsonCode
errors, isErrorType, errorFromMJSONWPStatusCode, errorFromW3CJsonCode,
getResponseForW3CError,
} from '../protocol/errors';
import { routeToCommandName } from '../protocol';
import { MAX_LOG_BODY_LENGTH, DEFAULT_BASE_PATH, PROTOCOLS } from '../constants';
@@ -312,15 +313,34 @@ class JWProxy {
}
async proxyReqRes (req, res) {
const [response, resBodyObj] = await this.proxyCommand(req.originalUrl, req.method, req.body);
// ! this method must not throw any exceptions
// ! make sure to call res.send before return
let statusCode;
let resBodyObj;
try {
let response;
[response, resBodyObj] = await this.proxyCommand(req.originalUrl, req.method, req.body);
res.headers = response.headers;
statusCode = response.statusCode;
} catch (err) {
[statusCode, resBodyObj] = getResponseForW3CError(
isErrorType(err, errors.ProxyRequestError) ? err.getActualError() : err
);
}
res.set('content-type', 'application/json; charset=utf-8');
if (!_.isPlainObject(resBodyObj)) {
const error = new errors.UnknownError(
`The downstream server response with the status code ${statusCode} is not a valid JSON object: ` +
_.truncate(`${resBodyObj}`, {length: 300})
);
[statusCode, resBodyObj] = getResponseForW3CError(error);
}
res.headers = response.headers;
res.set('content-type', response.headers['content-type']);
// if the proxied response contains a sessionId that the downstream
// driver has generated, we don't want to return that to the client.
// Instead, return the id from the request or from current session
const reqSessionId = this.getSessionIdFromUrl(req.originalUrl);
if (_.has(resBodyObj, 'sessionId')) {
const reqSessionId = this.getSessionIdFromUrl(req.originalUrl);
if (reqSessionId) {
this.log.info(`Replacing sessionId ${resBodyObj.sessionId} with ${reqSessionId}`);
resBodyObj.sessionId = reqSessionId;
@@ -330,7 +350,7 @@ class JWProxy {
}
}
resBodyObj.value = formatResponseValue(resBodyObj.value);
res.status(response.statusCode).send(JSON.stringify(formatStatus(resBodyObj)));
res.status(statusCode).send(JSON.stringify(formatStatus(resBodyObj)));
}
}
+6 -4
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/base-driver",
"version": "8.4.0",
"version": "8.4.2",
"description": "Base driver class for Appium drivers",
"keywords": [
"automation",
@@ -60,13 +60,15 @@
"express": "4.17.3",
"http-status-codes": "2.2.0",
"lodash": "4.17.21",
"lru-cache": "7.7.3",
"lru-cache": "7.8.1",
"method-override": "3.0.0",
"morgan": "1.10.0",
"serve-favicon": "2.5.0",
"source-map-support": "0.5.21",
"validate.js": "0.13.1",
"ws": "7.5.7"
"validate.js": "0.13.1"
},
"devDependencies": {
"ws": "8.5.0"
},
"engines": {
"node": ">=12",
@@ -1,6 +1,7 @@
import _ from 'lodash';
import { server, routeConfiguringFunction,
DEFAULT_WS_PATHNAME_PREFIX } from '../../../lib';
import {
server, routeConfiguringFunction, DEFAULT_WS_PATHNAME_PREFIX
} from '../../../lib';
import { FakeDriver } from '../protocol/fake-driver';
import WebSocket from 'ws';
import B from 'bluebird';
@@ -45,17 +46,22 @@ describe('Websockets (e2e)', function () {
_.keys(await baseServer.getWebSocketHandlers()).length.should.eql(1);
await new B((resolve, reject) => {
const client = new WebSocket(`ws://${TEST_HOST}:${port}${endpoint}`);
client.on('connection', (ws, req) => {
ws.should.not.be.empty;
req.connection.remoteAddress.should.not.be.empty;
client.once('connection', (ws, req) => {
try {
ws.should.not.be.empty;
req.connection.remoteAddress.should.not.be.empty;
} catch (e) {
reject(e);
}
});
client.on('message', (data) => {
data.should.eql(WS_DATA);
client.once('message', (data) => {
const dataStr = _.isString(data) ? data : data.toString();
dataStr.should.eql(WS_DATA);
resolve();
});
client.on('error', reject);
client.once('error', reject);
setTimeout(() => reject(new Error('No websocket messages have been received after the timeout')),
timeout);
timeout);
});
(await baseServer.removeWebSocketHandler(endpoint)).should.be.true;
@@ -64,7 +70,7 @@ describe('Websockets (e2e)', function () {
const client = new WebSocket(`ws://${TEST_HOST}:${port}${endpoint}`);
client.on('message', (data) =>
reject(new Error(`No websocket messages are expected after the handler ` +
`has been removed. '${data}' is received instead. `))
`has been removed. '${data}' is received instead. `))
);
client.on('error', resolve);
setTimeout(resolve, timeout);
+16
View File
@@ -3,6 +3,22 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.16.14](https://github.com/appium/appium/compare/@appium/doctor@1.16.13...@appium/doctor@1.16.14) (2022-04-12)
**Note:** Version bump only for package @appium/doctor
## [1.16.13](https://github.com/appium/appium/compare/@appium/doctor@1.16.12...@appium/doctor@1.16.13) (2022-04-12)
**Note:** Version bump only for package @appium/doctor
## [1.16.12](https://github.com/appium/appium/compare/@appium/doctor@1.16.11...@appium/doctor@1.16.12) (2022-04-07)
**Note:** Version bump only for package @appium/doctor
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/doctor",
"version": "1.16.12",
"version": "1.16.14",
"description": "Test environment for fitness to run Appium",
"keywords": [
"automation",
@@ -54,7 +54,7 @@
"lodash": "4.17.21",
"source-map-support": "0.5.21",
"teen_process": "1.16.0",
"yargs": "17.4.0"
"yargs": "17.4.1"
},
"engines": {
"node": ">=12",
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [5.0.4](https://github.com/appium/appium/compare/@appium/eslint-config-appium@5.0.3...@appium/eslint-config-appium@5.0.4) (2022-04-12)
**Note:** Version bump only for package @appium/eslint-config-appium
## [5.0.3](https://github.com/appium/appium/compare/@appium/eslint-config-appium@5.0.2...@appium/eslint-config-appium@5.0.3) (2022-04-07)
**Note:** Version bump only for package @appium/eslint-config-appium
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/eslint-config-appium",
"version": "5.0.3",
"version": "5.0.4",
"description": "Shared config for Appium's eslint style",
"keywords": [
"eslint",
+16
View File
@@ -3,6 +3,22 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.2.9](https://github.com/appium/appium/compare/@appium/fake-driver@3.2.8...@appium/fake-driver@3.2.9) (2022-04-12)
**Note:** Version bump only for package @appium/fake-driver
## [3.2.8](https://github.com/appium/appium/compare/@appium/fake-driver@3.2.7...@appium/fake-driver@3.2.8) (2022-04-12)
**Note:** Version bump only for package @appium/fake-driver
## [3.2.7](https://github.com/appium/appium/compare/@appium/fake-driver@3.2.6...@appium/fake-driver@3.2.7) (2022-04-07)
**Note:** Version bump only for package @appium/fake-driver
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/fake-driver",
"version": "3.2.7",
"version": "3.2.9",
"description": "Mock driver used internally by Appium for testing. Ignore",
"keywords": [
"automation",
+16
View File
@@ -3,6 +3,22 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [6.0.5](https://github.com/appium/appium/compare/@appium/gulp-plugins@6.0.4...@appium/gulp-plugins@6.0.5) (2022-04-12)
**Note:** Version bump only for package @appium/gulp-plugins
## [6.0.4](https://github.com/appium/appium/compare/@appium/gulp-plugins@6.0.3...@appium/gulp-plugins@6.0.4) (2022-04-12)
**Note:** Version bump only for package @appium/gulp-plugins
## [6.0.3](https://github.com/appium/appium/compare/@appium/gulp-plugins@6.0.2...@appium/gulp-plugins@6.0.3) (2022-04-07)
**Note:** Version bump only for package @appium/gulp-plugins
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/gulp-plugins",
"version": "6.0.3",
"version": "6.0.5",
"description": "Custom gulp plugins to be used across all appium modules",
"keywords": [
"automation",
@@ -89,7 +89,7 @@
"source-map-support": "0.5.21",
"through2": "4.0.2",
"vinyl-paths": "3.0.1",
"yargs": "17.4.0"
"yargs": "17.4.1"
},
"peerDependencies": {
"gulp": "^4.0.2"
+8
View File
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.0.4](https://github.com/appium/appium/compare/@appium/opencv@1.0.3...@appium/opencv@1.0.4) (2022-04-12)
**Note:** Version bump only for package @appium/opencv
## [1.0.3](https://github.com/appium/appium/compare/@appium/opencv@1.0.2...@appium/opencv@1.0.3) (2022-04-07)
**Note:** Version bump only for package @appium/opencv
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/opencv",
"version": "1.0.3",
"version": "1.0.4",
"description": "OpenCV-related helper library",
"keywords": [
"automation",
+8
View File
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [0.0.2](https://github.com/appium/appium/compare/@appium/schema@0.0.1...@appium/schema@0.0.2) (2022-04-12)
**Note:** Version bump only for package @appium/schema
## 0.0.1 (2022-04-07)
**Note:** Version bump only for package @appium/schema
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/schema",
"version": "0.0.1",
"version": "0.0.2",
"description": "Appium Configuration Schema",
"keywords": [
"automation",
+8
View File
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [2.57.1](https://github.com/appium/appium/compare/@appium/support@2.57.0...@appium/support@2.57.1) (2022-04-12)
**Note:** Version bump only for package @appium/support
# [2.57.0](https://github.com/appium/appium/compare/@appium/support@2.56.1...@appium/support@2.57.0) (2022-04-07)
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/support",
"version": "2.57.0",
"version": "2.57.1",
"description": "Support libs used across appium packages",
"keywords": [
"automation",
+8
View File
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.3.15](https://github.com/appium/appium/compare/@appium/test-support@1.3.14...@appium/test-support@1.3.15) (2022-04-12)
**Note:** Version bump only for package @appium/test-support
## [1.3.14](https://github.com/appium/appium/compare/@appium/test-support@1.3.13...@appium/test-support@1.3.14) (2022-04-07)
**Note:** Version bump only for package @appium/test-support
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/test-support",
"version": "1.3.14",
"version": "1.3.15",
"description": "A collection of test utilities used across Appium packages",
"keywords": [
"automation",
+8
View File
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [0.1.1](https://github.com/appium/appium/compare/@appium/types@0.1.0...@appium/types@0.1.1) (2022-04-12)
**Note:** Version bump only for package @appium/types
# 0.1.0 (2022-04-07)
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/types",
"version": "0.1.0",
"version": "0.1.1",
"description": "Various type declarations used across Appium",
"keywords": [
"appium",