Skip to content

Commit b23b2b0

Browse files
kevinbstackfrancisf
authored andcommitted
Adding parallel script
1 parent 78a06e3 commit b23b2b0

File tree

2 files changed

+82
-0
lines changed

2 files changed

+82
-0
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ Run single test session by running.
4949
```
5050
php single.php
5151
```
52+
### Parallel test
53+
Run parallel test session by running.
54+
```
55+
php parallel.php
56+
```
5257
### Local test
5358
Run local test session by running.
5459
```php

scripts/parallel.php

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<?php
2+
require_once('vendor/autoload.php');
3+
use Facebook\WebDriver\Remote\RemoteWebDriver;
4+
use Facebook\WebDriver\WebDriverBy;
5+
use Facebook\WebDriver\WebDriverExpectedCondition;
6+
function executeTestCase($caps) {
7+
$web_driver = RemoteWebDriver::create(
8+
"https://$BROWSERSTACK_USERNAME:$BROWSERSTACK_ACCESS_KEY@hub-cloud.browserstack.com/wd/hub",
9+
$caps
10+
);
11+
try{
12+
$web_driver->get("https://bstackdemo.com/");
13+
$web_driver->wait(10000)->until(WebDriverExpectedCondition::titleIs("StackDemo"));
14+
# getting text of the product
15+
$product_on_page = $web_driver->wait(10000)->until(WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::XPath("//*[@id='1']/p")))->getText();
16+
# clicking the 'Add to cart' button
17+
$web_driver->wait(10000)->until(WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::XPath("//*[@id='1']/div[4]")))->click();
18+
# checking whether the cart pane is present on webpage
19+
$web_driver->wait(10000)->until(WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::className("float-cart__content")));
20+
# getting text of the product
21+
$product_in_cart = $web_driver->wait(10000)->until(WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::XPath("//*[@id='__next']/div/div/div[2]/div[2]/div[2]/div/div[3]/p[1]")))->getText();
22+
# Setting the status of test as 'passed' or 'failed' based on the condition; if title of the web page starts with 'BrowserStack'
23+
if ($product_on_page == $product_in_cart){
24+
$web_driver->executeScript('browserstack_executor: {"action": "setSessionStatus", "arguments": {"status":"passed", "reason": "Product has been successfully added to the cart!"}}' );
25+
} else {
26+
$web_driver->executeScript('browserstack_executor: {"action": "setSessionStatus", "arguments": {"status":"failed", "reason": "Failed to add product to the cart or some elements might have failed to load."}}');
27+
}
28+
}
29+
catch(Exception $e){
30+
echo 'Message: ' .$e->getMessage();
31+
}
32+
$web_driver->quit();
33+
}
34+
$caps = array(
35+
array(
36+
'bstack:options' => array(
37+
"os" => "OS X",
38+
"osVersion" => "Sierra",
39+
"buildName" => "BStack Build Number 1",
40+
"sessionName" => "Thread 1",
41+
"local" => "false",
42+
"seleniumVersion" => "4.0.0",
43+
),
44+
"browserName" => "Chrome",
45+
"browserVersion" => "latest",
46+
),
47+
array(
48+
'bstack:options' => array(
49+
"os" => "OS X",
50+
"osVersion" => "Sierra",
51+
"buildName" => "BStack Build Number 1",
52+
"sessionName" => "Thread 2",
53+
"local" => "false",
54+
"seleniumVersion" => "4.0.0",
55+
),
56+
"browserName" => "Firefox",
57+
"browserVersion" => "latest",
58+
),
59+
array(
60+
'bstack:options' => array(
61+
"osVersion" => "10.0",
62+
"deviceName" => "Samsung Galaxy S20",
63+
"realMobile" => "true",
64+
"buildName" => "BStack Build Number 1",
65+
"sessionName" => "Thread 3",
66+
"local" => "false",
67+
"seleniumVersion" => "4.0.0",
68+
),
69+
"browserName" => "Chrome",
70+
"browserVersion" => "latest",
71+
),
72+
73+
);
74+
foreach ( $caps as $cap ) {
75+
executeTestCase($cap);
76+
}
77+
?>

0 commit comments

Comments
 (0)