From f877df6fb583ac89b5d39e76138aa3b1bd4a306f Mon Sep 17 00:00:00 2001 From: Kazuaki Matsuo Date: Thu, 3 Dec 2020 15:44:34 -0800 Subject: [PATCH] chore: merge master into 2.0 and added mac2 in lib/drivers.js (#14928) * fix: fix urls in docs (#14910) * docs: Update generated docs [ci skip] (#14913) Co-authored-by: runner * feat: Add Mac2Driver (#14911) * docs: Add Mac2Driver documentation (#14914) * chore: add scripts for doing releases (#14918) * docs: Update push-file.yml (#14920) * add appium-mac2-driver Co-authored-by: Appium Triager Co-authored-by: runner Co-authored-by: Mykola Mokhnach Co-authored-by: Dan Graham Co-authored-by: Ilija Boshkov --- .../commands/device/files/push-file.yml | 12 +++--- .../interactions/touch/double-tap.yml | 4 +- .../commands/interactions/touch/flick.yml | 2 +- .../interactions/touch/long-press.yml | 2 +- .../commands/interactions/touch/move.yml | 2 +- .../commands/interactions/touch/scroll.yml | 2 +- .../interactions/touch/touch-down.yml | 2 +- .../commands/interactions/touch/touch-up.yml | 2 +- commands-yml/commands/session/create.yml | 6 +-- commands-yml/commands/session/get.yml | 2 +- .../commands/interactions/touch/double-tap.md | 4 +- docs/en/commands/interactions/touch/flick.md | 2 +- .../commands/interactions/touch/long-press.md | 2 +- docs/en/commands/interactions/touch/move.md | 2 +- docs/en/commands/interactions/touch/scroll.md | 2 +- .../commands/interactions/touch/touch-down.md | 2 +- .../commands/interactions/touch/touch-up.md | 2 +- docs/en/commands/session/create.md | 4 +- docs/en/commands/session/get.md | 2 +- .../developers-overview.md | 20 ++-------- .../contributing-to-appium/release-appium.md | 23 ++++++++++++ docs/en/drivers/mac2.md | 37 +++++++++++++++++++ docs/toc.js | 1 + lib/drivers.js | 1 + scripts/release-branch.sh | 13 +++++++ scripts/release-candidate.sh | 4 ++ 26 files changed, 111 insertions(+), 46 deletions(-) create mode 100644 docs/en/contributing-to-appium/release-appium.md create mode 100644 docs/en/drivers/mac2.md create mode 100644 scripts/release-branch.sh create mode 100644 scripts/release-candidate.sh diff --git a/commands-yml/commands/device/files/push-file.yml b/commands-yml/commands/device/files/push-file.yml index 81420761d..0c0d27af6 100644 --- a/commands-yml/commands/device/files/push-file.yml +++ b/commands-yml/commands/device/files/push-file.yml @@ -5,7 +5,7 @@ short_description: Place a file onto the device in a particular place example_usage: java: | - driver.pushFile("/path/to/device/foo.bar", new File("/Users/johndoe/files/foo.bar")); + driver.pushFile("/data/local/tmp/foo.bar", new File("/Users/johndoe/files/foo.bar")); python: | dest_path = '/data/local/tmp/test_push_file.txt' @@ -13,23 +13,23 @@ example_usage: self.driver.push_file(dest_path, base64.b64encode(data).decode('utf-8')) javascript_wd: | - await driver.pushFileToDevice('/path/to/device/foo.bar', 'QXJlIHlvdXIgYmVlcnMgb2theT8='); + await driver.pushFileToDevice('/data/local/tmp/foo.bar', 'QXJlIHlvdXIgYmVlcnMgb2theT8='); javascript_wdio: | let data = new Buffer("Hello World").toString('base64'); driver.pushFile('/data/local/tmp/file.txt', data); ruby: | - push_file('/path/to/device/foo.bar', File.read('path/to/file.png')) + push_file('/data/local/tmp/foo.bar', File.read('path/to/file.png')) ruby_core: | - @driver.push_file('/path/to/device/foo.bar', File.read('path/to/file.png')) + @driver.push_file('/data/local/tmp/foo.bar', File.read('path/to/file.png')) php: | - $driver->pushFile('/path/to/device/foo.bar', 'QXJlIHlvdXIgYmVlcnMgb2theT8='); + $driver->pushFile('/data/local/tmp/foo.bar', 'QXJlIHlvdXIgYmVlcnMgb2theT8='); csharp: | - driver.PushFile("/path/to/device/foo.bar", new FileInfo("/Users/johndoe/files/foo.bar")) + driver.PushFile("/data/local/tmp/foo.bar", new FileInfo("/Users/johndoe/files/foo.bar")) client_docs: java: "https://appium.github.io/java-client/io/appium/java_client/android/PushesFiles.html#pushFile-java.lang.String-java.io.File-" diff --git a/commands-yml/commands/interactions/touch/double-tap.yml b/commands-yml/commands/interactions/touch/double-tap.yml index 52f3d55ea..24fba54f3 100644 --- a/commands-yml/commands/interactions/touch/double-tap.yml +++ b/commands-yml/commands/interactions/touch/double-tap.yml @@ -42,8 +42,8 @@ example_usage: action.Perform(); client_docs: - java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#doubleTap-org.openqa.selenium.WebElement-" - python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.double_tap" + java: "https://www.selenium.dev/selenium/docs/api/java/overview-summary.html" + python: "https://selenium-python.readthedocs.io/api.html?highlight=tap_and_hold#selenium.webdriver.common.touch_actions.TouchActions.double_tap" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L425" javascript_wdio: "https://webdriver.io/docs/api/jsonwp.html#touchdoubleclick" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:double_tap" diff --git a/commands-yml/commands/interactions/touch/flick.yml b/commands-yml/commands/interactions/touch/flick.yml index 4653329ed..9c99e0745 100644 --- a/commands-yml/commands/interactions/touch/flick.yml +++ b/commands-yml/commands/interactions/touch/flick.yml @@ -38,7 +38,7 @@ example_usage: client_docs: java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#flick-org.openqa.selenium.WebElement-int-int-int-" - python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.flick_element" + python: "https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.flick_element" javascript_wdio: "https://webdriver.io/docs/api/jsonwp.html#touchflick" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1513" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:flick" diff --git a/commands-yml/commands/interactions/touch/long-press.yml b/commands-yml/commands/interactions/touch/long-press.yml index ffc3fb02f..539c3c48a 100644 --- a/commands-yml/commands/interactions/touch/long-press.yml +++ b/commands-yml/commands/interactions/touch/long-press.yml @@ -45,7 +45,7 @@ example_usage: client_docs: java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#longPress-org.openqa.selenium.WebElement-" - python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.long_press" + python: "https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.long_press" javascript_wdio: "https://webdriver.io/docs/api/mjsonwp.html#touchperform" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1531" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:long_press" diff --git a/commands-yml/commands/interactions/touch/move.yml b/commands-yml/commands/interactions/touch/move.yml index e95abcb50..719e8d3a0 100644 --- a/commands-yml/commands/interactions/touch/move.yml +++ b/commands-yml/commands/interactions/touch/move.yml @@ -52,7 +52,7 @@ example_usage: client_docs: java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#down-int-int-" - python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.move" + python: "https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.touch_actions" javascript_wdio: "https://webdriver.io/docs/api/mjsonwp.html#multitouchperform" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1531" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:move" diff --git a/commands-yml/commands/interactions/touch/scroll.yml b/commands-yml/commands/interactions/touch/scroll.yml index 5d2c39e7f..a1a72fde0 100644 --- a/commands-yml/commands/interactions/touch/scroll.yml +++ b/commands-yml/commands/interactions/touch/scroll.yml @@ -39,7 +39,7 @@ example_usage: client_docs: java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#scroll-int-int-" - python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.scroll" + python: "https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.scroll" javascript_wdio: "https://webdriver.io/docs/api/jsonwp.html#touchscroll" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L425" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:scroll" diff --git a/commands-yml/commands/interactions/touch/touch-down.yml b/commands-yml/commands/interactions/touch/touch-down.yml index 841228c1d..9badc4baf 100644 --- a/commands-yml/commands/interactions/touch/touch-down.yml +++ b/commands-yml/commands/interactions/touch/touch-down.yml @@ -48,7 +48,7 @@ example_usage: client_docs: java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#down-int-int-" - python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.tap_and_hold" + python: "https://selenium-python.readthedocs.io/api.html?highlight=tap_and_hold#selenium.webdriver.common.touch_actions.TouchActions.tap_and_hold" javascript_wdio: "https://webdriver.io/docs/api/jsonwp.html#touchdown" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1546" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/TouchActionBuilder#down-instance_method" diff --git a/commands-yml/commands/interactions/touch/touch-up.yml b/commands-yml/commands/interactions/touch/touch-up.yml index eac729a36..88c995cf3 100644 --- a/commands-yml/commands/interactions/touch/touch-up.yml +++ b/commands-yml/commands/interactions/touch/touch-up.yml @@ -48,7 +48,7 @@ example_usage: client_docs: java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#up-int-int-" - python: "https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.release" + python: "https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.release" javascript_wdio: "https://webdriver.io/docs/api/jsonwp.html#touchup" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1546" ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:up" diff --git a/commands-yml/commands/session/create.yml b/commands-yml/commands/session/create.yml index 38cce83d9..57df8b341 100644 --- a/commands-yml/commands/session/create.yml +++ b/commands-yml/commands/session/create.yml @@ -90,12 +90,12 @@ example_usage: AndroidDriver driver = new AndroidDriver(new Uri("http://127.0.0.1:4723"), appiumOptions); client_docs: - java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/server/DefaultSession.html#createSession-org.openqa.selenium.remote.server.DriverFactory-org.openqa.selenium.remote.server.Clock-org.openqa.selenium.remote.SessionId-org.openqa.selenium.Capabilities-" + java: "https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/WebDriver.html" python: "http://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webelement.WebElement.clear" javascript_wdio: "https://webdriver.io/docs/api/webdriver.html#newsession" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L1780" - ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:clear" - ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:clear" + ruby: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver" + ruby_core: "https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver" php: "https://github.com/appium/php-client/" # TODO PHP documentation link csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO Dotnet documentation link diff --git a/commands-yml/commands/session/get.yml b/commands-yml/commands/session/get.yml index 0df8f0909..3c598bb3d 100644 --- a/commands-yml/commands/session/get.yml +++ b/commands-yml/commands/session/get.yml @@ -29,7 +29,7 @@ example_usage: ICapabilities caps = driver.Capabilities; client_docs: - java: "https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/server/ActiveSessions.html#get-org.openqa.selenium.remote.SessionId-" + java: "https://www.selenium.dev/selenium/docs/api/java/overview-summary.html" python: "https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.session.Session.session" javascript_wdio: "https://webdriver.io/docs/api/jsonwp.html#getsession" javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L227" diff --git a/docs/en/commands/interactions/touch/double-tap.md b/docs/en/commands/interactions/touch/double-tap.md index 48dd8f12c..3cd2b483c 100644 --- a/docs/en/commands/interactions/touch/double-tap.md +++ b/docs/en/commands/interactions/touch/double-tap.md @@ -85,8 +85,8 @@ action.Perform(); |Language|Support|Documentation| |--------|-------|-------------| -|[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#doubleTap-org.openqa.selenium.WebElement-) | -|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.double_tap) | +|[Java](https://github.com/appium/java-client/releases/latest)| All | [www.selenium.dev](https://www.selenium.dev/selenium/docs/api/java/overview-summary.html) | +|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html?highlight=tap_and_hold#selenium.webdriver.common.touch_actions.TouchActions.double_tap) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L425) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:double_tap) | diff --git a/docs/en/commands/interactions/touch/flick.md b/docs/en/commands/interactions/touch/flick.md index 624b786dc..1968061fb 100644 --- a/docs/en/commands/interactions/touch/flick.md +++ b/docs/en/commands/interactions/touch/flick.md @@ -81,7 +81,7 @@ action.Perform(); |Language|Support|Documentation| |--------|-------|-------------| |[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#flick-org.openqa.selenium.WebElement-int-int-int-) | -|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.flick_element) | +|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.flick_element) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1513) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:flick) | diff --git a/docs/en/commands/interactions/touch/long-press.md b/docs/en/commands/interactions/touch/long-press.md index 908a2c839..b29018bd2 100644 --- a/docs/en/commands/interactions/touch/long-press.md +++ b/docs/en/commands/interactions/touch/long-press.md @@ -88,7 +88,7 @@ touchAction.LongPress(element).Perform(); |Language|Support|Documentation| |--------|-------|-------------| |[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#longPress-org.openqa.selenium.WebElement-) | -|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.long_press) | +|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.long_press) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1531) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:long_press) | diff --git a/docs/en/commands/interactions/touch/move.md b/docs/en/commands/interactions/touch/move.md index 2bac0303c..ba903cf7c 100644 --- a/docs/en/commands/interactions/touch/move.md +++ b/docs/en/commands/interactions/touch/move.md @@ -98,7 +98,7 @@ As of Appium 1.8.0 all move actions take coordinates that are absolute. |Language|Support|Documentation| |--------|-------|-------------| |[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#down-int-int-) | -|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.move) | +|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.touch_actions) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1531) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:move) | diff --git a/docs/en/commands/interactions/touch/scroll.md b/docs/en/commands/interactions/touch/scroll.md index f48015ec4..8525b64b3 100644 --- a/docs/en/commands/interactions/touch/scroll.md +++ b/docs/en/commands/interactions/touch/scroll.md @@ -82,7 +82,7 @@ action.Perform(); |Language|Support|Documentation| |--------|-------|-------------| |[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#scroll-int-int-) | -|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.scroll) | +|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.scroll) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L425) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:scroll) | diff --git a/docs/en/commands/interactions/touch/touch-down.md b/docs/en/commands/interactions/touch/touch-down.md index 51942b328..5fb2c8fef 100644 --- a/docs/en/commands/interactions/touch/touch-down.md +++ b/docs/en/commands/interactions/touch/touch-down.md @@ -91,7 +91,7 @@ action.Perform(); |Language|Support|Documentation| |--------|-------|-------------| |[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#down-int-int-) | -|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.tap_and_hold) | +|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html?highlight=tap_and_hold#selenium.webdriver.common.touch_actions.TouchActions.tap_and_hold) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1546) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/TouchActionBuilder#down-instance_method) | diff --git a/docs/en/commands/interactions/touch/touch-up.md b/docs/en/commands/interactions/touch/touch-up.md index 3a3f9e770..0718225ef 100644 --- a/docs/en/commands/interactions/touch/touch-up.md +++ b/docs/en/commands/interactions/touch/touch-up.md @@ -91,7 +91,7 @@ action.Perform(); |Language|Support|Documentation| |--------|-------|-------------| |[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/interactions/touch/TouchActions.html#up-int-int-) | -|[Python](https://github.com/appium/python-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html#selenium.webdriver.common.touch_actions.TouchActions.release) | +|[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](https://selenium-python.readthedocs.io/api.html#selenium.webdriver.common.touch_actions.TouchActions.release) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1546) | |[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium%2FWebDriver%2FTouchActionBuilder:up) | diff --git a/docs/en/commands/session/create.md b/docs/en/commands/session/create.md index 08ec3c875..47bf7cb14 100644 --- a/docs/en/commands/session/create.md +++ b/docs/en/commands/session/create.md @@ -133,11 +133,11 @@ Please do not forget to call [delete command](/docs/en/commands/session/delete.m |Language|Support|Documentation| |--------|-------|-------------| -|[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/server/DefaultSession.html#createSession-org.openqa.selenium.remote.server.DriverFactory-org.openqa.selenium.remote.server.Clock-org.openqa.selenium.remote.SessionId-org.openqa.selenium.Capabilities-) | +|[Java](https://github.com/appium/java-client/releases/latest)| All | [www.selenium.dev](https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/WebDriver.html) | |[Python](https://github.com/appium/python-client/releases/latest)| All | [selenium-python.readthedocs.io](http://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webelement.WebElement.clear) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L1780) | -|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Element:clear) | +|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| All | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver) | |[PHP](https://github.com/appium/php-client/releases/latest)| All | [github.com](https://github.com/appium/php-client/) | |[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| All | [github.com](https://github.com/appium/appium-dotnet-driver/) | diff --git a/docs/en/commands/session/get.md b/docs/en/commands/session/get.md index 7bfd24ed3..f370940d2 100644 --- a/docs/en/commands/session/get.md +++ b/docs/en/commands/session/get.md @@ -72,7 +72,7 @@ ICapabilities caps = driver.Capabilities; |Language|Support|Documentation| |--------|-------|-------------| -|[Java](https://github.com/appium/java-client/releases/latest)| All | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/server/ActiveSessions.html#get-org.openqa.selenium.remote.SessionId-) | +|[Java](https://github.com/appium/java-client/releases/latest)| All | [www.selenium.dev](https://www.selenium.dev/selenium/docs/api/java/overview-summary.html) | |[Python](https://github.com/appium/python-client/releases/latest)| All | [appium.github.io](https://appium.github.io/python-client-sphinx/webdriver.extensions.html#webdriver.extensions.session.Session.session) | |[Javascript (WebdriverIO)](http://webdriver.io/index.html)| All | | |[Javascript (WD)](https://github.com/admc/wd/releases/latest)| All | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L227) | diff --git a/docs/en/contributing-to-appium/developers-overview.md b/docs/en/contributing-to-appium/developers-overview.md index 5527cb21d..8adf31bde 100644 --- a/docs/en/contributing-to-appium/developers-overview.md +++ b/docs/en/contributing-to-appium/developers-overview.md @@ -139,7 +139,7 @@ for e2e test files to end in `-e2e-specs.js`. The release process for any Appium module other than the main Appium package is pretty straightforward (note that you will need to be an NPM owner for the package if you want to publish it. Ownership is managed by the Appium -committers; talk to @jlipps or @imurchie if you believe you should be an owner +committers; talk to @jlipps, @kazucocoa, @dang, @mykola-mokhnach if you believe you should be an owner and are not): 1. `rm -rf node_modules && rm -rf package-lock.json && npm install` and run tests to make sure a clean install works. @@ -149,7 +149,7 @@ and are not): 1. Push the appropriate branch to GitHub, and don't forget to include the `--tags` flag to include the tag just created by `npm version`. 1. Run `npm publish` (with `--tag beta` if this isn't an official release). -For the main Appium packages, all the above steps must be taken, but with +For the main Appium package, all the above steps must be taken, but with several changes. One reason is that for the main package we use NPM shrinkwrap to ensure dependencies don't change between installations. Another reason is that we develop on master and release on various branches. The way it works is @@ -177,18 +177,4 @@ checked in to GitHub along with changes to `package.json`. With npm 5+ there is also a `package-lock.json` file produced. During the shrinkwrap process this is converted into the `npm-shrinkwrap.json` file. -1. Remove the NPM shrinkwrap and package-lock JSON files if they exists. -1. `rm -rf node_modules && npm install` and run tests to make sure a clean install works. -1. Determine whether we have a `patch` (bugfix), `minor` (feature), or `major` (breaking) release according to the principles of SemVer. -1. Update `package.json` with the appropriate new version. -1. Update the CHANGELOG/README with appropriate changes and submit for review as a PR, along with shrinkwrap and `package.json` changes. Wait for it to be merged, then pull it into the release branch. -1. Run `npm shrinkwrap` to generate the `npm-shrinkwrap.json` -1. Create a tag of the form `v` on the release branch (usually a minor branch like `1.5` or `1.4`), with: `git tag -a v`, e.g., `git tag -a v1.5.0`, `git tag -a v1.5.0-rc.1`. This is not necessary for beta versions. -1. Push the tag to upstream: `git push --tags ` -1. Run `npm publish` (with `--tag rc` if this isn't a GA release). -1. Remove the NPM shrinkwrap JSON file from Git and push the changes -1. Update the site docs by going to https://github.com/appium/appium.io/pulls and merging the latest pull request that was opened by the Triager bot. Close any other pull requests opened by Triager bot. -1. Create a new release on GitHub: go to `https://github.com/appium/appium/releases/tag/v` and hit "Edit Tag". Make the release name `` (e.g., `2.0.5`), then paste in the changelog (but not the changelog header for this version). If it's a beta release, mark as pre-release. -1. Create a new post on discuss.appium.io announcing the release. Post it in the "News" category. Paste in the changelog and any choice comments. Pin it and unpin the previous release post. -1. Begin process of releasing `appium-desktop`. -1. Notify @jlipps to so he can tweet a link to the discuss post. +Follow directions in [Release Appium Doc](docs/release-appium.md) diff --git a/docs/en/contributing-to-appium/release-appium.md b/docs/en/contributing-to-appium/release-appium.md new file mode 100644 index 000000000..58d382299 --- /dev/null +++ b/docs/en/contributing-to-appium/release-appium.md @@ -0,0 +1,23 @@ +# Releasing Appium +Appium follows the GitLab flow approach. Releases are made on release branches that have the format `releases/x.y` where `x` is a major version and `y` is a minor version. The main Appium repository doesn't strictly follow semver (unlike the dependencies of Appium). A minor release (e.g.: `1.20.0`) means that we're creating a new release that has a newly created set of dependencies that are shrinkwrapped to the latest. A patch release (e.g.: `1.20.4`) isn't strictly a "patch", but just means that we're making an intermediary release that brings in small changes. For example, suppose I have a new version of `appium-xcuitest-driver` that I want to publish and it can't wait until the next minor release. To bring in that change, I would checkout the release branch (e.g.: `git checkout releases/1.20`); install the dependency (`npm install appium-xcuitest-driver@version && git commit -a -m 'bump appium-xcuitest-driver to version $version`); release a "release candidate" (see below) and then when it's ready, graduate the "release candidate" to general availability + +## Create a release branch +1. `bash ./scripts/release-branch.sh x.y` where `x` is the major version and `y` is the minor version (example: `bash ./scripts/release-branch.sh 1.20`) + * This will create: + * A release branch `releases/1.20` + * A git tag `v1.20.0-rc.0` + * Publish a NPM package `1.20.0-rc.0` as a release candidate +1. Create a changelog pull request + +## Create a release candidate +1. Checkout the release branch (e.g.: `git checkout releases/1.21 && git pull origin releases/1.21`) +1. `bash ./scripts/release-candidate.sh rc` + +## Publish to GA +1. Checkout the release branch (e.g.: `git checkout releases/1.21 && git pull origin releases/1.21`) +1. `bash ./scripts/release-candidate.sh latest` +1. Update the site docs by going to https://github.com/appium/appium.io/pulls and merging the latest pull request that was opened by the Triager bot. Close any other pull requests opened by Triager bot. +1. Create a new release on GitHub: go to `https://github.com/appium/appium/releases/tag/v` and hit "Edit Tag". Make the release name `` (e.g., `2.0.5`), then paste in the changelog (but not the changelog header for this version). If it's a beta release, mark as pre-release. +1. Create a new post on discuss.appium.io announcing the release. Post it in the "News" category. Paste in the changelog and any choice comments. Pin it and unpin the previous release post. +1. Begin process of releasing `appium-desktop`. +1. Notify @jlipps to so he can tweet a link to the discuss post. \ No newline at end of file diff --git a/docs/en/drivers/mac2.md b/docs/en/drivers/mac2.md new file mode 100644 index 000000000..60bbd787c --- /dev/null +++ b/docs/en/drivers/mac2.md @@ -0,0 +1,37 @@ +## The Mac2Driver + +Mac2Driver has been added to Appium since version 1.20. +This driver is for automating macOS applications using Apple's [XCTest](https://developer.apple.com/documentation/xctest) framework. +It provides more flexibility and features in comparison to the legacy +[MacDriver](mac.md) and is better compatible with operating system internals. +The driver operates in scope of [W3C WebDriver protocol](https://www.w3.org/TR/webdriver/) with several custom extensions to cover operating-system specific scenarios. +The original idea and parts of the source code are borrowed from the Facebook's [WebDriverAgent](https://github.com/facebookarchive/WebDriverAgent) project. + +Development of the Mac2Driver happens at the +[appium-mac2-driver](https://github.com/appium/appium-mac2-driver) repo. + + +### Requirements and Support + +In addition to Appium's general requirements: + +- macOS 10.15 or later +- Xcode 12 or later should be installed +- Xcode Helper app should be enabled for Accessibility access. The app itself could be usually found at `/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Agents/Xcode Helper.app`. In order to enable Accessibility access for it simply open the parent folder in Finder: `open /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Agents/` and drag & drop the `Xcode Helper` app to `Security & Privacy -> Privacy -> Accessibility` list of your `System Preferences`. This action must only be done once. +- [Carthage](https://github.com/Carthage/Carthage) should be present. On macOS the utility could be installed via [Brew](https://brew.sh/): `brew install carthage` + + +### Usage + +The way to start a session using the Mac2Driver is to include the +`automationName` capability in your new session request, with +the value `Mac2`. Of course, you must also include appropriate +`platformName` (only `Mac` is supported). Read +[Mac2Driver documentation](https://github.com/appium/appium-mac2-driver/blob/master/README.md) +for more details. + + +### Capabilities + +The list of available driver capabilities could be found in +the driver [README](https://github.com/appium/appium-mac2-driver/blob/master/README.md) file. diff --git a/docs/toc.js b/docs/toc.js index 69512dbd3..8b9eeed92 100644 --- a/docs/toc.js +++ b/docs/toc.js @@ -21,6 +21,7 @@ module.exports = { ['Safari (Mac/iOS)', 'safari.md'], ['Gecko (Firefox)', 'gecko.md'], ['Mac', 'mac.md'], + ['Mac2', 'mac2.md'], ]], ['Commands', ['commands', ['Status', 'status.md'], diff --git a/lib/drivers.js b/lib/drivers.js index 1c590ac07..e4051bd37 100644 --- a/lib/drivers.js +++ b/lib/drivers.js @@ -12,6 +12,7 @@ const KNOWN_DRIVERS = { youiengine: 'appium-youiengine-driver', windows: 'appium-windows-driver', mac: 'appium-mac-driver', + mac2: 'appium-mac2-driver', espresso: 'appium-espresso-driver', tizen: 'appium-tizen-driver', flutter: 'appium-flutter-driver', diff --git a/scripts/release-branch.sh b/scripts/release-branch.sh new file mode 100644 index 000000000..c185394ca --- /dev/null +++ b/scripts/release-branch.sh @@ -0,0 +1,13 @@ +git fetch +echo "* Creating release branch $1" +git checkout -b releases/$1 +rm -rf node_modules/ npm-shrinkwrap.json package-lock.json +npm install +npm shrinkwrap +echo "* git add ." +git add npm-shrinkwrap.json package.json +git commit -m 'add shrinkwrap' +echo "* npm version $1.0-rc.0" +npm version $1.0-rc.0 +git push origin releases/$1 +bash ./scripts/release-candidate.sh diff --git a/scripts/release-candidate.sh b/scripts/release-candidate.sh new file mode 100644 index 000000000..cdf4eab9b --- /dev/null +++ b/scripts/release-candidate.sh @@ -0,0 +1,4 @@ +npm version prerelease --preid=$1 +git push +git push --tags +npm publish --tag $1