diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000..eec1b59
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+source "https://rubygems.org"
+
+gem "appium_lib", "16.1.1"
+gem "selenium-webdriver", "4.40.0"
+gem "cucumber", "~> 10.2"
+gem "rspec", "~> 3.13"
+gem "selenium-cucumber", "~> 3.1"
+gem "test-unit", "~> 3.7"
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 0000000..b6ed0cb
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,147 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ appium_lib (16.1.1)
+ appium_lib_core (>= 9.2.1, < 12.0)
+ nokogiri (~> 1.8, >= 1.8.1)
+ tomlrb (>= 1.1, < 3.0)
+ appium_lib_core (11.2.0)
+ faye-websocket (>= 0.11, < 0.13)
+ selenium-webdriver (~> 4.21)
+ base64 (0.3.0)
+ bigdecimal (4.0.1)
+ builder (3.3.0)
+ chunky_png (1.4.0)
+ cucumber (10.2.0)
+ base64 (~> 0.2)
+ builder (~> 3.2)
+ cucumber-ci-environment (> 9, < 12)
+ cucumber-core (> 15, < 17)
+ cucumber-cucumber-expressions (> 17, < 20)
+ cucumber-html-formatter (> 21, < 23)
+ diff-lcs (~> 1.5)
+ logger (~> 1.6)
+ mini_mime (~> 1.1)
+ multi_test (~> 1.1)
+ sys-uname (~> 1.3)
+ cucumber-ci-environment (11.0.0)
+ cucumber-core (16.1.1)
+ cucumber-gherkin (> 36, < 40)
+ cucumber-messages (> 31, < 33)
+ cucumber-tag-expressions (> 6, < 9)
+ cucumber-cucumber-expressions (19.0.0)
+ bigdecimal
+ cucumber-gherkin (38.0.0)
+ cucumber-messages (>= 31, < 33)
+ cucumber-html-formatter (22.3.0)
+ cucumber-messages (> 23, < 33)
+ cucumber-messages (32.0.1)
+ cucumber-tag-expressions (8.1.0)
+ diff-lcs (1.6.2)
+ eventmachine (1.2.7)
+ faye-websocket (0.12.0)
+ eventmachine (>= 0.12.0)
+ websocket-driver (>= 0.8.0)
+ ffi (1.17.3-x64-mingw-ucrt)
+ logger (1.7.0)
+ memoist3 (1.0.0)
+ mini_mime (1.1.5)
+ multi_test (1.1.0)
+ nokogiri (1.19.0-x64-mingw-ucrt)
+ racc (~> 1.4)
+ power_assert (3.0.1)
+ racc (1.8.1)
+ rexml (3.4.4)
+ rspec (3.13.2)
+ rspec-core (~> 3.13.0)
+ rspec-expectations (~> 3.13.0)
+ rspec-mocks (~> 3.13.0)
+ rspec-core (3.13.6)
+ rspec-support (~> 3.13.0)
+ rspec-expectations (3.13.5)
+ diff-lcs (>= 1.2.0, < 2.0)
+ rspec-support (~> 3.13.0)
+ rspec-mocks (3.13.7)
+ diff-lcs (>= 1.2.0, < 2.0)
+ rspec-support (~> 3.13.0)
+ rspec-support (3.13.7)
+ rubyzip (3.2.2)
+ selenium-cucumber (3.1.5)
+ appium_lib (>= 8.0.2)
+ chunky_png (>= 1.3.5)
+ cucumber (>= 2.3.0)
+ rspec (>= 3.4.0)
+ selenium-webdriver (>= 2.53.0)
+ selenium-webdriver (4.40.0)
+ base64 (~> 0.2)
+ logger (~> 1.4)
+ rexml (~> 3.2, >= 3.2.5)
+ rubyzip (>= 1.2.2, < 4.0)
+ websocket (~> 1.0)
+ sys-uname (1.4.1)
+ ffi (~> 1.1)
+ memoist3 (~> 1.0.0)
+ test-unit (3.7.7)
+ power_assert
+ tomlrb (2.0.4)
+ websocket (1.2.11)
+ websocket-driver (0.8.0)
+ base64
+ websocket-extensions (>= 0.1.0)
+ websocket-extensions (0.1.5)
+
+PLATFORMS
+ x64-mingw-ucrt
+
+DEPENDENCIES
+ appium_lib (= 16.1.1)
+ cucumber (~> 10.2)
+ rspec (~> 3.13)
+ selenium-cucumber (~> 3.1)
+ selenium-webdriver (= 4.40.0)
+ test-unit (~> 3.7)
+
+CHECKSUMS
+ appium_lib (16.1.1) sha256=d53402b41846c1e1431ed44ba49cb7c9ff8f56f2a51c433b57f167b68afe9cb7
+ appium_lib_core (11.2.0) sha256=677040cceb7ff5e07276df55791106fee398101b69e82edf9e382a6609d18a70
+ base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
+ bigdecimal (4.0.1) sha256=8b07d3d065a9f921c80ceaea7c9d4ae596697295b584c296fe599dd0ad01c4a7
+ builder (3.3.0) sha256=497918d2f9dca528fdca4b88d84e4ef4387256d984b8154e9d5d3fe5a9c8835f
+ chunky_png (1.4.0) sha256=89d5b31b55c0cf4da3cf89a2b4ebc3178d8abe8cbaf116a1dba95668502fdcfe
+ cucumber (10.2.0) sha256=fdedbd31ecf40858b60f04853f2aa15c44f5c30bbac29c6a227fa1e7005a8158
+ cucumber-ci-environment (11.0.0) sha256=0df79a9e1d0b015b3d9def680f989200d96fef206f4d19ccf86a338c4f71d1e2
+ cucumber-core (16.1.1) sha256=d3aaa80a1ee2865f63f1a21ef496129f675af9099993b9af9608c4ef8ae26b89
+ cucumber-cucumber-expressions (19.0.0) sha256=33208ff204732ac9bed42b46993a0a243054f71ece08579d57e53df6a1c9d93a
+ cucumber-gherkin (38.0.0) sha256=3e5846badf646eaec482b07067520e4494f370a0cfa5474d63522ca2ace800c4
+ cucumber-html-formatter (22.3.0) sha256=f9768ed05588dbd73a5f3824c2cc648bd86b00206e6972d743af8051281d0729
+ cucumber-messages (32.0.1) sha256=8889d29fa5486e6523bd537e95fbf86b99eb11258528d2d55af4b806594ffcff
+ cucumber-tag-expressions (8.1.0) sha256=9bd8c4b6654f8e5bf2a9c99329b6f32136a75e50cd39d4cfb3927d0fa9f52e21
+ diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
+ eventmachine (1.2.7) sha256=994016e42aa041477ba9cff45cbe50de2047f25dd418eba003e84f0d16560972
+ faye-websocket (0.12.0) sha256=ad9f7dfcd0306d0a13baeee450729657661129af15bb5f38716c242484ab42e1
+ ffi (1.17.3-x64-mingw-ucrt) sha256=5f1d7d067a9a1058ad183dba25b05557cd51c85fc1768c49338eabc1cf242d7c
+ logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
+ memoist3 (1.0.0) sha256=686e42402cf150a362050c23143dc57b0ef88f8c344943ff8b7845792b50d56f
+ mini_mime (1.1.5) sha256=8681b7e2e4215f2a159f9400b5816d85e9d8c6c6b491e96a12797e798f8bccef
+ multi_test (1.1.0) sha256=e9e550cdd863fb72becfe344aefdcd4cbd26ebf307847f4a6c039a4082324d10
+ nokogiri (1.19.0-x64-mingw-ucrt) sha256=05d7ed2d95731edc9bef2811522dc396df3e476ef0d9c76793a9fca81cab056b
+ power_assert (3.0.1) sha256=8ce9876716cc74e863fcd4cdcdc52d792bd983598d1af3447083a3a9a4d34103
+ racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
+ rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142
+ rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587
+ rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d
+ rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
+ rspec-mocks (3.13.7) sha256=0979034e64b1d7a838aaaddf12bf065ea4dc40ef3d4c39f01f93ae2c66c62b1c
+ rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c
+ rubyzip (3.2.2) sha256=c0ed99385f0625415c8f05bcae33fe649ed2952894a95ff8b08f26ca57ea5b3c
+ selenium-cucumber (3.1.5) sha256=3e15ef2ef9507d73a3c20ce65f9001c614d1588ac6d7e2f865029335459465ad
+ selenium-webdriver (4.40.0) sha256=16ef7aa9853c1d4b9d52eac45aafa916e3934c5c83cb4facb03f250adfd15e5b
+ sys-uname (1.4.1) sha256=ed2278ec670ee8af5eb5420d3a98e22188051f6241180db7c779993db2739a16
+ test-unit (3.7.7) sha256=3c89d5ff0690a16bef9946156c4624390402b9d54dfcf4ce9cbd5b06bead1e45
+ tomlrb (2.0.4) sha256=262f77947ac3ac9b3366a0a5940ecd238300c553e2e14f22009e2afcd2181b99
+ websocket (1.2.11) sha256=b7e7a74e2410b5e85c25858b26b3322f29161e300935f70a0e0d3c35e0462737
+ websocket-driver (0.8.0) sha256=ed0dba4b943c22f17f9a734817e808bc84cdce6a7e22045f5315aa57676d4962
+ websocket-extensions (0.1.5) sha256=1c6ba63092cda343eb53fc657110c71c754c56484aad42578495227d717a8241
+
+BUNDLED WITH
+ 4.0.5
diff --git a/README.md b/README.md
index b7d71c9..b7e5cc0 100644
--- a/README.md
+++ b/README.md
@@ -142,6 +142,8 @@ You can update your custom capabilities in test scripts. In this sample project,
+**Android**
+
```ruby title="Android first.config.yml)"
server: "mobile-hub.lambdatest.com"
user: "LT_USERNAME" # Add Lambdatest username here
@@ -160,11 +162,38 @@ browser_caps:
"deviceName": "Galaxy S21 5G"
"platformVersion": "11"
"app": "APP_URL" # Add your app url here
+
+```
+**W3C Capabilities (Ruby 3.4 Fix)**
+
+You must update your env.rb file (located in features/support/) using Symbols for keys.
+
+Android Example:
+
+```bash
+caps = {
+ "platformName" => full_caps["platform"] || "Android",
+ "appium:deviceName" => full_caps["deviceName"] || "Galaxy S21 5G",
+ "appium:platformVersion" => full_caps["platformVersion"] || "11",
+ "appium:app" => "lt://proverbial-android", # Ensure this matches your LT app ID
+ "appium:isRealMobile" => true,
+ "appium:automationName" => "UiAutomator2",
+ "lt:options" => {
+ "user" => username,
+ "accessKey" => accessToken,
+ "build" => "Ruby-Cucumber-Android",
+ "name" => "Sample Test",
+ "w3c" => true,
+ "isRealMobile" => true
+ }
+}
```
+**Ios**
+
```ruby title="iOS first.config.yml"
server: "mobile-hub.lambdatest.com"
user: "LT_USERNAME" # Add Lambdatest username here
@@ -182,8 +211,31 @@ browser_caps:
"deviceName": "iPad (2017)"
"platformVersion": "13"
"app": "APP_URL" # Add your app url here
+
```
+**W3C Capabilities (Ruby 3.4 Fix)**
+You must update your env.rb file (located in features/support/) using Symbols for keys.
+
+ios Example:
+```bash
+caps = {
+ "platformName" => full_caps["platform"] || "ios",
+ "appium:deviceName" => full_caps["deviceName"] || "iPhone 15",
+ "appium:platformVersion" => full_caps["platformVersion"] || "17",
+ "appium:app" => "lt://proverbial-ios", # Ensure this matches your LT app ID
+ "appium:isRealMobile" => true,
+ "appium:automationName" => "XCUITest",
+ "lt:options" => {
+ "user" => username,
+ "accessKey" => accessToken,
+ "build" => "Ruby-Cucumber-ios",
+ "name" => "Sample Test",
+ "w3c" => true,
+ "isRealMobile" => true
+ }
+}
+```
@@ -205,6 +257,7 @@ browser_caps:
bundle install
bundle exec rake first
```
+Alternative command: If rake is not configured, you can run "bundle exec cucumber" directly in these folders.
### **Speed up test execution with parallel testing :**
@@ -217,6 +270,19 @@ bundle exec rake first
**Info:** Your test results would be displayed on the test console (or command-line interface if you are using terminal/cmd) and on the :link: [LambdaTest App Automation Dashboard](https://appautomation.lambdatest.com/build).
+## Troubleshooting
+
+1. Error: Connection refused - connect(2) for "127.0.0.1"
+Cause: Ruby is trying to find a local Appium server because it doesn't recognize your LambdaTest URL.
+Fix: In your env.rb file, ensure the driver initialization uses symbols:
+
+```bash
+@appium_driver = Appium::Driver.new({
+ :caps => caps,
+ :appium_lib => { :server_url => server_url }
+}, true)
+```
+
## Additional Links
- [Advanced Configuration for Capabilities](https://www.lambdatest.com/support/docs/desired-capabilities-in-appium/)
diff --git a/android/examples/Gemfile.lock b/android/examples/Gemfile.lock
index cc0dd64..559190b 100644
--- a/android/examples/Gemfile.lock
+++ b/android/examples/Gemfile.lock
@@ -1,96 +1,94 @@
GEM
remote: http://rubygems.org/
specs:
- appium_lib (12.0.1)
- appium_lib_core (~> 5.0)
+ appium_lib (11.2.0)
+ appium_lib_core (~> 4.1)
nokogiri (~> 1.8, >= 1.8.1)
- tomlrb (>= 1.1, < 3.0)
- appium_lib_core (5.3.0)
+ tomlrb (~> 1.1)
+ appium_lib_core (4.7.1)
faye-websocket (~> 0.11.0)
- selenium-webdriver (~> 4.2, < 4.5)
- builder (3.2.4)
- childprocess (4.1.0)
+ selenium-webdriver (~> 3.14, >= 3.14.1)
+ base64 (0.3.0)
+ bigdecimal (4.0.1)
+ builder (3.3.0)
+ childprocess (3.0.0)
chunky_png (1.4.0)
- cucumber (8.0.0)
- builder (~> 3.2, >= 3.2.4)
- cucumber-ci-environment (~> 9.0, >= 9.0.4)
- cucumber-core (~> 11.0, >= 11.0.0)
- cucumber-cucumber-expressions (~> 15.1, >= 15.1.1)
- cucumber-gherkin (~> 23.0, >= 23.0.1)
- cucumber-html-formatter (~> 19.1, >= 19.1.0)
- cucumber-messages (~> 18.0, >= 18.0.0)
- diff-lcs (~> 1.5, >= 1.5.0)
- mime-types (~> 3.4, >= 3.4.1)
- multi_test (~> 1.1, >= 1.1.0)
- sys-uname (~> 1.2, >= 1.2.2)
- cucumber-ci-environment (9.1.0)
- cucumber-core (11.0.0)
- cucumber-gherkin (~> 23.0, >= 23.0.1)
- cucumber-messages (~> 18.0, >= 18.0.0)
- cucumber-tag-expressions (~> 4.1, >= 4.1.0)
- cucumber-cucumber-expressions (15.2.0)
- cucumber-gherkin (23.0.1)
- cucumber-messages (~> 18.0, >= 18.0.0)
- cucumber-html-formatter (19.2.0)
- cucumber-messages (~> 18.0, >= 18.0.0)
- cucumber-messages (18.0.0)
- cucumber-tag-expressions (4.1.0)
- diff-lcs (1.5.0)
+ cucumber (10.2.0)
+ base64 (~> 0.2)
+ builder (~> 3.2)
+ cucumber-ci-environment (> 9, < 12)
+ cucumber-core (> 15, < 17)
+ cucumber-cucumber-expressions (> 17, < 20)
+ cucumber-html-formatter (> 21, < 23)
+ diff-lcs (~> 1.5)
+ logger (~> 1.6)
+ mini_mime (~> 1.1)
+ multi_test (~> 1.1)
+ sys-uname (~> 1.3)
+ cucumber-ci-environment (11.0.0)
+ cucumber-core (16.1.1)
+ cucumber-gherkin (> 36, < 40)
+ cucumber-messages (> 31, < 33)
+ cucumber-tag-expressions (> 6, < 9)
+ cucumber-cucumber-expressions (19.0.0)
+ bigdecimal
+ cucumber-gherkin (38.0.0)
+ cucumber-messages (>= 31, < 33)
+ cucumber-html-formatter (22.3.0)
+ cucumber-messages (> 23, < 33)
+ cucumber-messages (32.0.1)
+ cucumber-tag-expressions (8.1.0)
+ diff-lcs (1.6.2)
eventmachine (1.2.7)
- faye-websocket (0.11.1)
+ faye-websocket (0.11.4)
eventmachine (>= 0.12.0)
- websocket-driver (>= 0.5.1)
- ffi (1.15.5)
- mime-types (3.4.1)
- mime-types-data (~> 3.2015)
- mime-types-data (3.2022.0105)
+ websocket-driver (>= 0.5.1, < 0.8.0)
+ ffi (1.17.3-x64-mingw-ucrt)
+ logger (1.7.0)
+ memoist3 (1.0.0)
+ mini_mime (1.1.5)
multi_test (1.1.0)
- nokogiri (1.13.8-arm64-darwin)
+ nokogiri (1.19.0-x64-mingw-ucrt)
racc (~> 1.4)
- nokogiri (1.13.8-x86_64-darwin)
- racc (~> 1.4)
- parallel (1.22.1)
- parallel_tests (3.12.0)
+ parallel (1.27.0)
+ parallel_tests (5.5.0)
parallel
- racc (1.6.0)
- rake (13.0.6)
- rexml (3.2.5)
- rspec (3.11.0)
- rspec-core (~> 3.11.0)
- rspec-expectations (~> 3.11.0)
- rspec-mocks (~> 3.11.0)
- rspec-core (3.11.0)
- rspec-support (~> 3.11.0)
- rspec-expectations (3.11.0)
+ racc (1.8.1)
+ rake (13.3.1)
+ rspec (3.13.2)
+ rspec-core (~> 3.13.0)
+ rspec-expectations (~> 3.13.0)
+ rspec-mocks (~> 3.13.0)
+ rspec-core (3.13.6)
+ rspec-support (~> 3.13.0)
+ rspec-expectations (3.13.5)
diff-lcs (>= 1.2.0, < 2.0)
- rspec-support (~> 3.11.0)
- rspec-mocks (3.11.1)
+ rspec-support (~> 3.13.0)
+ rspec-mocks (3.13.7)
diff-lcs (>= 1.2.0, < 2.0)
- rspec-support (~> 3.11.0)
- rspec-support (3.11.0)
- rubyzip (2.3.2)
+ rspec-support (~> 3.13.0)
+ rspec-support (3.13.7)
+ rubyzip (3.2.2)
selenium-cucumber (3.1.5)
appium_lib (>= 8.0.2)
chunky_png (>= 1.3.5)
cucumber (>= 2.3.0)
rspec (>= 3.4.0)
selenium-webdriver (>= 2.53.0)
- selenium-webdriver (4.4.0)
- childprocess (>= 0.5, < 5.0)
- rexml (~> 3.2, >= 3.2.5)
- rubyzip (>= 1.2.2, < 3.0)
- websocket (~> 1.0)
- sys-uname (1.2.2)
+ selenium-webdriver (3.142.7)
+ childprocess (>= 0.5, < 4.0)
+ rubyzip (>= 1.2.2)
+ sys-uname (1.4.1)
ffi (~> 1.1)
- tomlrb (2.0.3)
- websocket (1.2.9)
- websocket-driver (0.7.5)
+ memoist3 (~> 1.0.0)
+ tomlrb (1.3.0)
+ websocket-driver (0.7.7)
+ base64
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
PLATFORMS
- arm64-darwin-21
- x86_64-darwin-21
+ x64-mingw-ucrt
DEPENDENCIES
appium_lib
@@ -99,7 +97,49 @@ DEPENDENCIES
rake
rspec
selenium-cucumber
- selenium-webdriver
+ selenium-webdriver (~> 3.142, >= 3.142.5)
+
+CHECKSUMS
+ appium_lib (11.2.0)
+ appium_lib_core (4.7.1)
+ base64 (0.3.0)
+ bigdecimal (4.0.1)
+ builder (3.3.0)
+ childprocess (3.0.0)
+ chunky_png (1.4.0)
+ cucumber (10.2.0)
+ cucumber-ci-environment (11.0.0)
+ cucumber-core (16.1.1)
+ cucumber-cucumber-expressions (19.0.0)
+ cucumber-gherkin (38.0.0)
+ cucumber-html-formatter (22.3.0)
+ cucumber-messages (32.0.1)
+ cucumber-tag-expressions (8.1.0)
+ diff-lcs (1.6.2)
+ eventmachine (1.2.7)
+ faye-websocket (0.11.4)
+ ffi (1.17.3-x64-mingw-ucrt)
+ logger (1.7.0)
+ memoist3 (1.0.0)
+ mini_mime (1.1.5)
+ multi_test (1.1.0)
+ nokogiri (1.19.0-x64-mingw-ucrt)
+ parallel (1.27.0)
+ parallel_tests (5.5.0)
+ racc (1.8.1)
+ rake (13.3.1)
+ rspec (3.13.2)
+ rspec-core (3.13.6)
+ rspec-expectations (3.13.5)
+ rspec-mocks (3.13.7)
+ rspec-support (3.13.7)
+ rubyzip (3.2.2)
+ selenium-cucumber (3.1.5)
+ selenium-webdriver (3.142.7)
+ sys-uname (1.4.1)
+ tomlrb (1.3.0)
+ websocket-driver (0.7.7)
+ websocket-extensions (0.1.5)
BUNDLED WITH
- 2.3.21
+ 4.0.5
diff --git a/android/examples/run-first-test/features/support/env.rb b/android/examples/run-first-test/features/support/env.rb
index 43a55e5..ceaf703 100644
--- a/android/examples/run-first-test/features/support/env.rb
+++ b/android/examples/run-first-test/features/support/env.rb
@@ -1,76 +1,54 @@
require 'yaml'
require 'rspec'
require 'selenium-cucumber'
-
require 'appium_lib'
-TASK_ID = (ENV['TASK_ID'] || 0).to_i
-CONFIG_NAME = ENV['CONFIG_NAME'] || 'first'
-
-CONFIG = YAML.load(File.read(File.join(File.dirname(__FILE__), "../../config/#{CONFIG_NAME}.config.yml")))
-
-@caps = CONFIG['common_caps'].merge(CONFIG['browser_caps'][TASK_ID])
-
-
-#$bs_local = nil
-
-
-puts @caps.inspect
-
-us= @caps["user"].inspect
-ak= @caps["key"].inspect
-is= @caps["isRealMobile"].inspect
-pl= @caps["platform"].inspect
-dn= @caps["deviceName"].inspect
-pv= @caps["platformVersion"].inspect
-ap= @caps["app"].inspect
-
-
-
-user= us.gsub("\"", "")
-accessKey=ak.gsub("\"", "")
-isRealMobile= is.gsub("\"", "")
-platform= pl.gsub("\"", "")
-deviceName= dn.gsub("\"", "")
-platformVersion= pv.gsub("\"", "")
-app= ap.gsub("\"", "")
-puts isRealMobile
-
-
-caps={
-
- "LT:Options" => {
-
- "build" => "Cucumber Android Single",
- "name" => "Cucumber Sample Test",
- "platformName" => platform,
- "isRealMobile" => isRealMobile,
- "deviceName" => deviceName,
- "platformVersion" => platformVersion,
- "app" => app,
- "w3c" => true
-
-},
+# 1. Credentials from Environment or YAML
+username = ENV['LT_USERNAME']
+accessToken = ENV['LT_ACCESS_KEY']
+
+# 2. Load YAML Config
+config_path = File.join(File.dirname(__FILE__), "../../config/first.config.yml")
+if File.exist?(config_path)
+ config = YAML.load(File.read(config_path))
+ common_caps = config['common_caps'] || {}
+ browser_caps = config['browser_caps'][0] || {}
+ # Merge them
+ full_caps = common_caps.merge(browser_caps)
+else
+ full_caps = {}
+end
-
+# 3. Construct W3C Compliant Capabilities
+caps = {
+ "platformName" => full_caps["platform"] || "Android",
+ "appium:deviceName" => full_caps["deviceName"] || "Galaxy S21 5G",
+ "appium:platformVersion" => full_caps["platformVersion"] || "11",
+ "appium:app" => "lt://proverbial-android", # Ensure this matches your LT app ID
+ "appium:isRealMobile" => true,
+ "appium:automationName" => "UiAutomator2",
+ "lt:options" => {
+ "user" => username,
+ "accessKey" => accessToken,
+ "build" => "Ruby-Cucumber-Android",
+ "name" => "Sample Test",
+ "w3c" => true,
+ "isRealMobile" => true
+ }
}
-
-appium_driver = Appium::Driver.new({
- 'caps' => caps,
- 'appium_lib' => {
- :server_url => "https://#{CONFIG['user']}:#{CONFIG['key']}@#{CONFIG['server']}/wd/hub"
- #server_url: "https://webhook.site/5958677a-4db9-4253-bb76-5b98e97e4880"
- }}, true)
-
-
+# 4. Initialize the Appium Driver
+appium_lib_options = {
+ server_url: "https://#{username}:#{accessToken}@mobile-hub.lambdatest.com/wd/hub",
+ wait: 10
+}
begin
- #$appium_driver = Appium::Driver.new(desired_caps, true)
- $driver = appium_driver.start_driver
- #example.run
-ensure
- #$driver.quit
-end
-
-
+ puts "Connecting to LambdaTest..."
+ $appium_driver = Appium::Driver.new({ caps: caps, appium_lib: appium_lib_options }, true)
+ $driver = $appium_driver.start_driver
+ puts "Session started successfully!"
+rescue Exception => e
+ puts "Error starting driver: #{e.message}"
+ raise e
+end
\ No newline at end of file
diff --git a/ios/examples/Gemfile.lock b/ios/examples/Gemfile.lock
index b9082cf..a27ba61 100644
--- a/ios/examples/Gemfile.lock
+++ b/ios/examples/Gemfile.lock
@@ -1,98 +1,101 @@
GEM
remote: http://rubygems.org/
specs:
- appium_lib (12.0.1)
- appium_lib_core (~> 5.0)
+ appium_lib (16.1.1)
+ appium_lib_core (>= 9.2.1, < 12.0)
nokogiri (~> 1.8, >= 1.8.1)
tomlrb (>= 1.1, < 3.0)
- appium_lib_core (5.3.0)
- faye-websocket (~> 0.11.0)
- selenium-webdriver (~> 4.2, < 4.5)
- browserstack-local (1.4.0)
- builder (3.2.4)
- childprocess (4.1.0)
+ appium_lib_core (11.2.0)
+ faye-websocket (>= 0.11, < 0.13)
+ selenium-webdriver (~> 4.21)
+ base64 (0.3.0)
+ bigdecimal (4.0.1)
+ builder (3.3.0)
chunky_png (1.4.0)
- cucumber (8.0.0)
- builder (~> 3.2, >= 3.2.4)
- cucumber-ci-environment (~> 9.0, >= 9.0.4)
- cucumber-core (~> 11.0, >= 11.0.0)
- cucumber-cucumber-expressions (~> 15.1, >= 15.1.1)
- cucumber-gherkin (~> 23.0, >= 23.0.1)
- cucumber-html-formatter (~> 19.1, >= 19.1.0)
- cucumber-messages (~> 18.0, >= 18.0.0)
- diff-lcs (~> 1.5, >= 1.5.0)
- mime-types (~> 3.4, >= 3.4.1)
- multi_test (~> 1.1, >= 1.1.0)
- sys-uname (~> 1.2, >= 1.2.2)
- cucumber-ci-environment (9.1.0)
- cucumber-core (11.0.0)
- cucumber-gherkin (~> 23.0, >= 23.0.1)
- cucumber-messages (~> 18.0, >= 18.0.0)
- cucumber-tag-expressions (~> 4.1, >= 4.1.0)
- cucumber-cucumber-expressions (15.2.0)
- cucumber-gherkin (23.0.1)
- cucumber-messages (~> 18.0, >= 18.0.0)
- cucumber-html-formatter (19.2.0)
- cucumber-messages (~> 18.0, >= 18.0.0)
- cucumber-messages (18.0.0)
- cucumber-tag-expressions (4.1.0)
- diff-lcs (1.5.0)
+ cucumber (10.2.0)
+ base64 (~> 0.2)
+ builder (~> 3.2)
+ cucumber-ci-environment (> 9, < 12)
+ cucumber-core (> 15, < 17)
+ cucumber-cucumber-expressions (> 17, < 20)
+ cucumber-html-formatter (> 21, < 23)
+ diff-lcs (~> 1.5)
+ logger (~> 1.6)
+ mini_mime (~> 1.1)
+ multi_test (~> 1.1)
+ sys-uname (~> 1.3)
+ cucumber-ci-environment (11.0.0)
+ cucumber-core (16.1.1)
+ cucumber-gherkin (> 36, < 40)
+ cucumber-messages (> 31, < 33)
+ cucumber-tag-expressions (> 6, < 9)
+ cucumber-cucumber-expressions (19.0.0)
+ bigdecimal
+ cucumber-gherkin (38.0.0)
+ cucumber-messages (>= 31, < 33)
+ cucumber-html-formatter (22.3.0)
+ cucumber-messages (> 23, < 33)
+ cucumber-messages (32.0.1)
+ cucumber-tag-expressions (8.1.0)
+ diff-lcs (1.6.2)
eventmachine (1.2.7)
- faye-websocket (0.11.1)
+ faye-websocket (0.12.0)
eventmachine (>= 0.12.0)
- websocket-driver (>= 0.5.1)
- ffi (1.15.5)
- mime-types (3.4.1)
- mime-types-data (~> 3.2015)
- mime-types-data (3.2022.0105)
+ websocket-driver (>= 0.8.0)
+ ffi (1.17.3-x64-mingw-ucrt)
+ logger (1.7.0)
+ memoist3 (1.0.0)
+ mini_mime (1.1.5)
multi_test (1.1.0)
- nokogiri (1.13.8-arm64-darwin)
+ nokogiri (1.19.0-x64-mingw-ucrt)
racc (~> 1.4)
- parallel (1.22.1)
- parallel_tests (3.12.0)
+ parallel (1.27.0)
+ parallel_tests (5.5.0)
parallel
- racc (1.6.0)
- rake (13.0.6)
- rexml (3.2.5)
- rspec (3.11.0)
- rspec-core (~> 3.11.0)
- rspec-expectations (~> 3.11.0)
- rspec-mocks (~> 3.11.0)
- rspec-core (3.11.0)
- rspec-support (~> 3.11.0)
- rspec-expectations (3.11.0)
+ racc (1.8.1)
+ rake (13.3.1)
+ rexml (3.4.4)
+ rspec (3.13.2)
+ rspec-core (~> 3.13.0)
+ rspec-expectations (~> 3.13.0)
+ rspec-mocks (~> 3.13.0)
+ rspec-core (3.13.6)
+ rspec-support (~> 3.13.0)
+ rspec-expectations (3.13.5)
diff-lcs (>= 1.2.0, < 2.0)
- rspec-support (~> 3.11.0)
- rspec-mocks (3.11.1)
+ rspec-support (~> 3.13.0)
+ rspec-mocks (3.13.7)
diff-lcs (>= 1.2.0, < 2.0)
- rspec-support (~> 3.11.0)
- rspec-support (3.11.0)
- rubyzip (2.3.2)
+ rspec-support (~> 3.13.0)
+ rspec-support (3.13.7)
+ rubyzip (3.2.2)
selenium-cucumber (3.1.5)
appium_lib (>= 8.0.2)
chunky_png (>= 1.3.5)
cucumber (>= 2.3.0)
rspec (>= 3.4.0)
selenium-webdriver (>= 2.53.0)
- selenium-webdriver (4.4.0)
- childprocess (>= 0.5, < 5.0)
+ selenium-webdriver (4.40.0)
+ base64 (~> 0.2)
+ logger (~> 1.4)
rexml (~> 3.2, >= 3.2.5)
- rubyzip (>= 1.2.2, < 3.0)
+ rubyzip (>= 1.2.2, < 4.0)
websocket (~> 1.0)
- sys-uname (1.2.2)
+ sys-uname (1.4.1)
ffi (~> 1.1)
- tomlrb (2.0.3)
- websocket (1.2.9)
- websocket-driver (0.7.5)
+ memoist3 (~> 1.0.0)
+ tomlrb (2.0.4)
+ websocket (1.2.11)
+ websocket-driver (0.8.0)
+ base64
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
PLATFORMS
- arm64-darwin-21
+ x64-mingw-ucrt
DEPENDENCIES
appium_lib
- browserstack-local
cucumber
parallel_tests
rake
@@ -100,5 +103,48 @@ DEPENDENCIES
selenium-cucumber
selenium-webdriver
+CHECKSUMS
+ appium_lib (16.1.1)
+ appium_lib_core (11.2.0)
+ base64 (0.3.0)
+ bigdecimal (4.0.1)
+ builder (3.3.0)
+ chunky_png (1.4.0)
+ cucumber (10.2.0)
+ cucumber-ci-environment (11.0.0)
+ cucumber-core (16.1.1)
+ cucumber-cucumber-expressions (19.0.0)
+ cucumber-gherkin (38.0.0)
+ cucumber-html-formatter (22.3.0)
+ cucumber-messages (32.0.1)
+ cucumber-tag-expressions (8.1.0)
+ diff-lcs (1.6.2)
+ eventmachine (1.2.7)
+ faye-websocket (0.12.0)
+ ffi (1.17.3-x64-mingw-ucrt)
+ logger (1.7.0)
+ memoist3 (1.0.0)
+ mini_mime (1.1.5)
+ multi_test (1.1.0)
+ nokogiri (1.19.0-x64-mingw-ucrt)
+ parallel (1.27.0)
+ parallel_tests (5.5.0)
+ racc (1.8.1)
+ rake (13.3.1)
+ rexml (3.4.4)
+ rspec (3.13.2)
+ rspec-core (3.13.6)
+ rspec-expectations (3.13.5)
+ rspec-mocks (3.13.7)
+ rspec-support (3.13.7)
+ rubyzip (3.2.2)
+ selenium-cucumber (3.1.5)
+ selenium-webdriver (4.40.0)
+ sys-uname (1.4.1)
+ tomlrb (2.0.4)
+ websocket (1.2.11)
+ websocket-driver (0.8.0)
+ websocket-extensions (0.1.5)
+
BUNDLED WITH
- 2.3.21
+ 4.0.5
diff --git a/ios/examples/run-first-test/config/first.config.yml b/ios/examples/run-first-test/config/first.config.yml
index 7c79716..144c958 100644
--- a/ios/examples/run-first-test/config/first.config.yml
+++ b/ios/examples/run-first-test/config/first.config.yml
@@ -11,6 +11,6 @@ browser_caps:
-
"isRealMobile": "true"
"platform": "iOS"
- "deviceName": "iPhone 11"
- "platformVersion": "14"
+ "deviceName": "iPhone 15"
+ "platformVersion": "17"
"app": "lt://proverbial-ios" # Add your app url here
diff --git a/ios/examples/run-first-test/features/support/env.rb b/ios/examples/run-first-test/features/support/env.rb
index 19c10b1..bb916e9 100644
--- a/ios/examples/run-first-test/features/support/env.rb
+++ b/ios/examples/run-first-test/features/support/env.rb
@@ -1,76 +1,54 @@
require 'yaml'
require 'rspec'
require 'selenium-cucumber'
-
require 'appium_lib'
-TASK_ID = (ENV['TASK_ID'] || 0).to_i
-CONFIG_NAME = ENV['CONFIG_NAME'] || 'first'
-
-CONFIG = YAML.load(File.read(File.join(File.dirname(__FILE__), "../../config/#{CONFIG_NAME}.config.yml")))
-
-@caps = CONFIG['common_caps'].merge(CONFIG['browser_caps'][TASK_ID])
-
-
-#$bs_local = nil
-
-
-puts @caps.inspect
-
-us= @caps["user"].inspect
-ak= @caps["key"].inspect
-is= @caps["isRealMobile"].inspect
-pl= @caps["platform"].inspect
-dn= @caps["deviceName"].inspect
-pv= @caps["platformVersion"].inspect
-ap= @caps["app"].inspect
-
-
-
-user= us.gsub("\"", "")
-accessKey=ak.gsub("\"", "")
-isRealMobile= is.gsub("\"", "")
-platform= pl.gsub("\"", "")
-deviceName= dn.gsub("\"", "")
-platformVersion= pv.gsub("\"", "")
-app= ap.gsub("\"", "")
-puts isRealMobile
-
-
-caps={
-
- "LT:Options" => {
-
- "build" => "Cucumber iOS Single",
- "name" => "Cucumber Sample Test",
- "platformName" => platform,
- "isRealMobile" => isRealMobile,
- "deviceName" => deviceName,
- "platformVersion" => platformVersion,
- "app" => app,
- "w3c" => true
-
-},
+# 1. Credentials from Environment or YAML
+username = ENV['LT_USERNAME']
+accessToken = ENV['LT_ACCESS_KEY']
+
+# 2. Load YAML Config
+config_path = File.join(File.dirname(__FILE__), "../../config/first.config.yml")
+if File.exist?(config_path)
+ config = YAML.load(File.read(config_path))
+ common_caps = config['common_caps'] || {}
+ browser_caps = config['browser_caps'][0] || {}
+ # Merge them
+ full_caps = common_caps.merge(browser_caps)
+else
+ full_caps = {}
+end
-
+# 3. Construct W3C Compliant Capabilities
+caps = {
+ "platformName" => full_caps["platform"] || "ios",
+ "appium:deviceName" => full_caps["deviceName"] || "iPhone 15",
+ "appium:platformVersion" => full_caps["platformVersion"] || "17",
+ "appium:app" => "lt://proverbial-ios", # Ensure this matches your LT app ID
+ "appium:isRealMobile" => true,
+ "appium:automationName" => "XCUITest",
+ "lt:options" => {
+ "user" => username,
+ "accessKey" => accessToken,
+ "build" => "Ruby-Cucumber-ios",
+ "name" => "Sample Test",
+ "w3c" => true,
+ "isRealMobile" => true
+ }
}
-
-appium_driver = Appium::Driver.new({
- 'caps' => caps,
- 'appium_lib' => {
- :server_url => "https://#{CONFIG['user']}:#{CONFIG['key']}@#{CONFIG['server']}/wd/hub"
- #server_url: "https://webhook.site/5958677a-4db9-4253-bb76-5b98e97e4880"
- }}, true)
-
-
+# 4. Initialize the Appium Driver
+appium_lib_options = {
+ server_url: "https://#{username}:#{accessToken}@mobile-hub.lambdatest.com/wd/hub",
+ wait: 10
+}
begin
- #$appium_driver = Appium::Driver.new(desired_caps, true)
- $driver = appium_driver.start_driver
- #example.run
-ensure
- #$driver.quit
-end
-
-
+ puts "Connecting to LambdaTest..."
+ $appium_driver = Appium::Driver.new({ caps: caps, appium_lib: appium_lib_options }, true)
+ $driver = $appium_driver.start_driver
+ puts "Session started successfully!"
+rescue Exception => e
+ puts "Error starting driver: #{e.message}"
+ raise e
+end
\ No newline at end of file