Setting up pipelines with selenium

Hi, I am attempting to use Bitbucket pipelines to run our Ruby Rspec/capaybara based specs.

 

I have the configuration working to the point where the tests are run, but I am having issues running chromedriver.

 

Selenium::WebDriver::Error::UnknownError: unknown error: Chrome failed to start: exited abnormally

 

Those are the kinds of errors I am seeing.

 

I have seen this question posted:

 

https://community.atlassian.com/t5/Bitbucket-questions/BitBucket-Pipelines-Selenium/qaq-p/641852

 

But I do not want to set up browserstack in this instance, - but simply run the tests with chromedriver.

 

My yml file looks as follows:

 

image: ruby:2.4.0

pipelines:
    default:
           - step:
              services:
                 - mysql
                     caches:
                        - bundler
                           script: # Modify the commands below to build your repository.
                             - bundle install
                             - apt-get update
                             - curl -sL https://deb.nodesource.com/setup_8.x | bash -
                             - apt-get install -y nodejs
                             - npm install
                             - npm install chromedriver
                             - rails db:migrate RAILS_ENV=test
                             - rspec

 

1 answer

1 accepted

0 votes
Accepted answer

Hi @hugh

It is possible to run webdriver tests in Pipelines. This article provides some details using firefox but a similar approach can be taken with chrome: https://medium.com/@yiquanzhou/run-selenium-ui-tests-in-docker-container-78be98e1b52d

In fact we test pipelines using this method ;)

Thank you, that did help - I ended up setting it up using Firefox and Geckodriver, I kept running into issues with Chrome and Chromedriver.

How possible without docker in bitbucket?

Hi @Stephan Kristyn,

Bitbucket Pipelines is based entirely on Docker. When you run your build script you're doing so inside a Docker container. If you don't explicitly specify an image in the bitbucket-pipelines.yml file, it will use the default Pipelines image.

That doesn't mean you have to be using Docker in your application to use Pipelines. It simply provides the environment in which your build runs. This is extremely useful as you can preconfigure a Docker image to come with all the tooling you need to build, test and deploy your application (or use an existing image provided by the Docker community).

So while it's possible to set up and run webdriver in the script section of the bitbucket-pipelines.yml file, it's actually more beneficial to utilise an image that has already been configured with the necessary tooling. The linked article describes that process. You would then use the image as your build environment by specifying it as the `image` attribute in your bitbucket-pipelines.yml file (your actual build script should remain largely unchanged). This will also reduce your build times as Docker images are cached.

Suggest an answer

Log in or Sign up to answer
Community showcase
Published Nov 06, 2018 in Bitbucket

Upgrade Best Practices

Hello! My name is Mark Askew and I am a Premier Support Engineer for products Bitbucket Server/Data Center, Fisheye & Crucible. Today, I want to bring the discussion that Jennifer, Matt, and ...

657 views 5 9
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you