Migrating a Ruby test suite to Device Farm desktop browser testing
Follow the steps in this topic to get your tests running on ruby.
To migrate your existing tests
-
Install the appropriate gems:
gem install selenium-webdriver gem install aws-sdk-devicefarmIf you are using Bundler, add the following to your Gemfile:
gem 'selenium-webdriver' gem 'aws-sdk-devicefarm'and update your installed gems with
bundle install -
Modify your test suite to use RemoteWebDriver. Wherever you initialize a
WebDriverinstance, configure aRemoteWebDriverinstance using the endpoint generated by the Device Farm API.-
Import the Device Farm classes:
require 'aws-sdk-devicefarm' require 'selenium-webdriver' -
Instantiate a new
DeviceFarm::Clientwhere you create yourWebDriverdevicefarm = Aws::DeviceFarm::Client.new(region: 'us-west-2') -
Get a signed
WebDriverhub URL:test_grid_url_response = devicefarm.create_test_grid_url( project_arn: "arn:aws:devicefarm:us-west-2:111122223333:testgrid-project:123e4567-e89b-12d3-a456-426655440000", expires_in_seconds: 300) remote_url = test_grid_url_response.url -
Use the
DesiredCapabilitiesclass to specify the browser to test against:capabilities = Selenium::WebDriver::Remote::Capabilities.firefox -
Create your
RemoteWebDriverin place of your existingGeckoDriver,ChromeDriver, or similar. To avoid timeouts, create a new HTTP client with an extended timeout:client = Selenium::WebDriver::Remote::Http::Default.new client.read_timeout = 180 # seconds - make sure to set a timeout here of at least 3 minutes (default is 60 seconds) driver = Selenium::WebDriver.for :remote, http_client: client, url: remote_url, desired_capabilities: capabilitiesNote
If you do not set an increased timeout, the session creation will time out before your session is ready.
-
Make sure to close your session after the tests are complete:
driver.quit
-
-
Modify your environment to include your AWS access and secret keys. The steps vary depending on your configuration, but involve setting two environment variables:
Important
We recommend that you follow the standard security advice of granting least privilege—that is, granting only the permissions required to perform a task—when you configure the AWS SDK and AWS CLI with credentials. For more information, see AWS Security Credentials and IAM Best Practices.
AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLEAWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY -
Run your tests. They're on Device Farm!
For more information, see AWS SDK for Ruby Developer Guide.