Test on Internal Networks
BrowserStack can integrate with test suites pointing to your localhost URL, staging environment, and even websites behind one or more proxies/firewalls. This is done using BrowserStack Local - a tunneling feature that establishes a secure connection between your machine and the BrowserStack Cloud.
Prerequisites
If you have already run your first test, you can skip the prerequisites.
- BrowserStack Username and Access key, which you can find in your account settings. If you have not created an account yet, you can sign up for a Free Trial or purchase a plan.
- Python v3 installed on your machine.
- Git installed on your machine.
Run your first Local test
Configure your Python tests for Local Testing using the following steps:
- Clone the sample python-selenium-browserstack repository using the following command:
git clone https://github.com/browserstack/python-selenium-browserstack.git
- Run the following commands in your command-line to install the required dependencies in the cloned repository:
cd python-selenium-browserstack pip install browserstack-local
- Set your BrowserStack credentials in the
scripts/local.py
file as follows:# set your Access Key BROWSERSTACK_USERNAME = os.environ.get("BROWSERSTACK_USERNAME") or "YOUR_USERNAME" BROWSERSTACK_ACCESS_KEY = os.environ.get("BROWSERSTACK_ACCESS_KEY") or "YOUR_ACCESS_KEY"
- Verify that the
browserstack.local
capability is set totrue
in thescripts/local.py
file.desired_cap = { "local" : "true" }
- Verify that the
seleniumVersion
capability is set to4.0.0
or greater version in thescripts/local.py
file.desired_cap = { "seleniumVersion" : "4.0.0" }
- Run the Python test using the following command::
cd scripts python3 local.py
- View your tests on your Automate Dashboard.
Understand your Local test script
When you run the python3 local.py
command, the local.py
file within the scripts
directory is executed. When the test is triggered, it:
- Starts Local Testing connection
- Opens
http://bs-local.com:45691/check
- Checks whether the web page contains the
Up and running
text - Marks the test as passed or failed based on the availability of the text
- Stops the Local Testing connection.
from dotenv import load_dotenv
import os
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.chrome.options import Options as ChromeOptions
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from browserstack.local import Local
from selenium.common.exceptions import NoSuchElementException
load_dotenv()
BROWSERSTACK_USERNAME = os.environ.get("BROWSERSTACK_USERNAME") or "YOUR_USERNAME"
BROWSERSTACK_ACCESS_KEY = os.environ.get("BROWSERSTACK_ACCESS_KEY") or "YOUR_ACCESS_KEY"
URL = os.environ.get("URL") or "https://hub.browserstack.com/wd/hub"
# Creates an instance of Local
bs_local = Local()
# You can also set an environment variable - "BROWSERSTACK_ACCESS_KEY".
bs_local_args = { "key": BROWSERSTACK_ACCESS_KEY }
# Starts the Local instance with the required arguments
try:
bs_local.start(**bs_local_args)
except Exception:
bs_local.stop()
bs_local.start(**bs_local_args)
# Check if BrowserStack local instance is running
print(bs_local.isRunning())
desired_cap = {
"os" : "OS X",
"osVersion" : "Sierra",
"buildName" : "Final-Snippet-Test",
"sessionName" : "Selenium-4 Python snippet test",
"local" : "true",
"seleniumVersion" : "4.0.0",
"userName": BROWSERSTACK_USERNAME,
"accessKey": BROWSERSTACK_ACCESS_KEY
}
options = ChromeOptions()
options.set_capability('bstack:options', desired_cap)
driver = webdriver.Remote(
command_executor=URL,
options=options)
try:
driver.get("http://bs-local.com:45691/check")
body_text = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'body'))).text
# Verify whether the product (iPhone 12) is added to cart
if body_text == "Up and running":
# Set the status of test as 'passed' or 'failed' based on the condition; if item is added to cart
driver.execute_script('browserstack_executor: {"action": "setSessionStatus", "arguments": {"status":"passed", "reason": "Local Test ran successfully"}}')
except NoSuchElementException:
driver.execute_script('browserstack_executor: {"action": "setSessionStatus", "arguments": {"status":"failed", "reason": "Local test setup failed"}}')
bs_local.stop()
except Exception:
driver.execute_script('browserstack_executor: {"action": "setSessionStatus", "arguments": {"status":"failed", "reason": "Some exception occurred"}}')
bs_local.stop()
# Stop the driver
driver.quit()
bs_local.stop()
Next steps
After you have successfully run your first test using BrowserStack Local, you can explore the following sections:
- Run multiple tests in parallel to speed up builds
- Test local websites that resides behind a proxy
- Manage Local Testing connections
- Set up your CI/CD: Jenkins, Bamboo, TeamCity, Azure, CircleCI, BitBucket, TravisCI, GitHub Actions, GoCD
We're sorry to hear that. Please share your feedback so we can do better
Contact our Support team for immediate help while we work on improving our docs.
We're continuously improving our docs. We'd love to know what you liked
We're sorry to hear that. Please share your feedback so we can do better
Contact our Support team for immediate help while we work on improving our docs.
We're continuously improving our docs. We'd love to know what you liked
Thank you for your valuable feedback!