Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

ReadMe.md

Building a browser-based test automation server on the Google Cloud Platform by using SeleniumBase

(This tutorial, from a previous GCP Meetup live demo, will teach you how to setup a Linux server for running automated browser tests. The cost of running this server is $14.20/month on Google Cloud (enough to handle 6 parallel tests). This is amazingly 20 times LESS expensive than using competitors such as BrowserStack or Sauce Labs for the SAME number of parallel tests.)

Step 1. Open the Google Cloud Platform Cloud Launcher

Step 2. Launch a Jenkins instance

  • Under "Cloud Launcher", Click on "Jenkins"
  • Click on "Launch on Compute Engine"
  • Give the instance a name
  • Give the instance a zone
  • Click "Create"

Step 3. Connect with your new Jenkins instance

  • SSH into your new instance by selecting: "SSH" => "Open in browser window" from the instance page.

Step 4. Clone the SeleniumBase repository from the root ("/") directory.

cd /
sudo git clone https://github.com/seleniumbase/SeleniumBase.git

Step 5. Enter the "linux" folder

cd SeleniumBase/integrations/linux/

Step 6. Give Jenkins (aka "tomcat" user) sudo access (See jenkins_permissions.sh for details)

./jenkins_permissions.sh

Step 7. Become "tomcat" (the Jenkins user) and enter a "bash" shell

sudo su tomcat
bash

Step 8. Install dependencies (See Linuxfile.sh for details)

./Linuxfile.sh

Step 9. Start up the headless browser display mechanism: Xvfb (See Xvfb_launcher.sh for details)

./Xvfb_launcher.sh

Step 10. Go to the SeleniumBase directory

cd /SeleniumBase

Step 11. Install the requirements for SeleniumBase

sudo pip install -r server_requirements.txt --upgrade

Step 12. Install SeleniumBase (Make sure you already installed the requirements above)

sudo python server_setup.py install

Step 13. Run an example test in Chrome to verify installation (Takes ~10 seconds)

py.test examples/my_first_test.py --with-selenium --headless --browser=chrome

Step 14. If you like nosetests better than pytest, that works too

nosetests examples/my_first_test.py --with-selenium --headless --browser=chrome

Step 15. You can also verify that the example test runs on Firefox

nosetests examples/my_first_test.py --with-selenium --headless --browser=firefox

Step 16. Login to Jenkins

  • (The url, as well as username and password, should be accessible from your Google Cloud Platform VM instance page.)

Step 17. Create a new Jenkins job

  • Click on "New Item"
  • Give your new Jenkins job a name (ex: "My_First_Test")
  • Select "Freestyle project"
  • Click "OK"

Step 18. Setup your new Jenkins job

  • Under "Source Code Management", select "Git".
  • For the "Repository URL", put: https://github.com/seleniumbase/SeleniumBase.git. (You'll eventually be using your own clone of the repository here.)
  • Under "Build", click the "Add build step" dropdown and then select "Execute shell".
  • For the "Command", put:
nosetests examples/my_first_test.py --with-selenium --headless --browser=chrome
  • Click "Save" when you're done.

Step 19. Run your new Jenkins job

  • Click on "Build Now"
  • (If all the setup was done correctly, you should see a blue dot appear after a few seconds, indicating that the test job passed.)

Step 20. Future Work

If you have a web application that you want to test, you'll be able to create SeleniumBase tests and add them to Jenkins as you saw here. You may want to create a Deploy job, which downloads the latest version of your repository, and then kicks off all tests to run after that. You could then tell that Deploy job to auto-run whenever a change is pushed to your repository by using: "Poll SCM". All your tests would then be able to run by using: "Build after other projects are built". You can also use MySQL to save test results in the DB so that you can query the data at any time.

Congratulations! You're now well on your way to becoming a build & release / automation engineer!

MySQL DB setup instructions

Step 21. Return to the Google Cloud Launcher and launch a MySQL Instance

  • Under "Featured Solutions", Click on "MySQL"
  • Click on "Launch on Compute Engine"
  • Give the instance a name
  • Give the instance a zone
  • Click "Create"

Step 22. Get the Connection credentials for your new MySQL DB

  • Under the Google Cloud Platform menu, go to "Compute Engine"
  • Find your new MySQL instance and then write down the value written in the "External IP" section.
  • Under the Google Cloud Platform menu, go to "Deployment Manager"
  • Find your new MySQL instance and then click on it.
  • Write down the values for Admin username and password. (Username should be "root")

Step 23. Get a MySQL GUI tool so that you can connect to your MySQL DB

Step 24. Create a new connection to your MySQL DB

  • Use the MySQL DB credentials that you saved in Step 21 for this.

Step 25. Create a new schema in your MySQL DB

  • You can name your schema test.

Step 26. Create the necessary tables in your MySQL schema

Step 27. Have your local clone of SeleniumBase connect to your MySQL DB

  • Update the MySQL connection details in your settings.py file to use the credentials that you saved in Step 21.
  • Run the following command again from the top-level SeleniumBase folder to make sure that SeleniumBase uses the updated credentials:
sudo python setup.py install

Step 28. Have your SeleniumBase Jenkins jobs use your MySQL DB

  • For the "Execute shell", use the following as your updated "Command":
nosetests examples/my_test_suite.py --with-selenium --headless --browser=chrome --with-db_reporting --with-testing_base
  • Click "Save" when you're done.

Step 29. Run your new Jenkins job

  • Click on "Build Now"
  • If all goes well, you should be seeing new rows appear in your MySQL DB.

Step 30. Congratulations! If you made it this far, you're awesome!