Commit e7d42082 authored by CrioUser's avatar CrioUser
Browse files

Created solution

parent 007d83b8
File added
File added
File added
No preview for this file type
#!/bin/bash
# Stop the existing the zalenium docker container if its runnning
sudo docker stop zalenium
# Start the zalenium docker container in 8082 port
sudo /usr/bin/docker run -d --rm -i --name zalenium -p 8082:4444 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /tmp/videos:/home/seluser/videos \
--privileged dosel/zalenium start --videoRecordingEnabled false --desiredContainers 1
ip="$(curl -s http://checkip.amazonaws.com/)"
url="http://$ip:8082/vnc/host/172.17.0.3/port/50000/?nginx=&path=proxy/172.17.0.3:50000/websockify&view_only=false"
for i in {0..31}
do
count=$(sudo docker ps | grep zalenium_ | wc -l)
if [[ "$count" = "1" ]]; then
break
fi
if [[ "$i" = "30" ]]; then
echo "$(tput setaf 1) Error starting zalenium container. Please contact Crio Support"
exit 1
fi
sleep 1
done
sleep 4
echo ""
echo ""
echo $url
exit 0
package QKART_TestNG.pages;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
public class Login {
RemoteWebDriver driver;
@FindBy(id="username")
WebElement username_txt_box;
@FindBy(id="password")
WebElement password_txt_box;
@FindBy(className = "button")
WebElement login_button;
@FindBy(className = "username-text")
WebElement username_label;
String url = "https://crio-qkart-frontend-qa.vercel.app/login";
public Login(RemoteWebDriver driver)
{
this.driver = driver;
PageFactory.initElements(new AjaxElementLocatorFactory(driver, 20), this);
}
public void navigateToLoginPage()
{
if(! this.driver.getCurrentUrl().equals(this.url))
{
this.driver.get(this.url);
}
}
public Boolean performLogin(String Username, String Password) throws InterruptedException
{
username_txt_box.sendKeys(Username); // Enter the username in the login page
password_txt_box.sendKeys(Password);
login_button.click(); // click the login Button
Thread.sleep(5000);
synchronized(driver)
{
driver.wait(2000);
}
return this.verifyUserLoggedIn(Username);
}
public Boolean verifyUserLoggedIn(String Username)
{
try{
return username_label.getText().equals(Username);
}catch(Exception e)
{
//User May not have logged in
return false;
}
// top right of the page
}
}
package QKART_TestNG.pages;
import java.sql.Timestamp;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
public class Register {
RemoteWebDriver driver;
String url = "https://crio-qkart-frontend-qa.vercel.app/register";
public String lastGeneratedUsername = "";
@FindBy(id="username")
WebElement username_txt_box;
@FindBy(id="password")
WebElement password_txt_box;
@FindBy(id="confirmPassword")
WebElement confirm_password_txt_box;
@FindBy(className = "button")
WebElement register_now_button;
public Register(RemoteWebDriver driver)
{
this.driver = driver;
PageFactory.initElements(new AjaxElementLocatorFactory(driver, 20), this);
}
public void navigateToRegisterPage()
{
if(!driver.getCurrentUrl().equals(this.url))
{
driver.get(this.url);
PageFactory.initElements(new AjaxElementLocatorFactory(driver, 20), this);
}
}
public Boolean registerUser(String Username , String Password, Boolean makeUsernameDynamic ) throws InterruptedException
{
Timestamp timestamp = new Timestamp(System.currentTimeMillis()); // Get time stamp for generating a unique username
String test_data_username;
if(makeUsernameDynamic)
test_data_username = Username+"_"+String.valueOf(timestamp.getTime()); //concatenate the timestamp to string to form unique timestamp
else
test_data_username = Username;
String test_data_password = Password;
username_txt_box.sendKeys(test_data_username);//Type the generated username in the username field
password_txt_box.sendKeys(test_data_password); // Entering the Password value
confirm_password_txt_box.sendKeys(test_data_password); // Entering the Confirm Password Value
register_now_button.click(); // clicking the register now button
this.lastGeneratedUsername = test_data_username;
//Thread.sleep(5000); //SLEEP_STMT_06: Wait for user to get created in the backend
WebDriverWait wait = new WebDriverWait(driver,30);
wait.until(ExpectedConditions.urlToBe("https://crio-qkart-frontend-qa.vercel.app/login"));
return this.driver.getCurrentUrl().endsWith("/login");
}
}
package QKART_TestNG.tests;
import QKART_TestNG.pages.Login;
import QKART_TestNG.pages.Register;
import org.testng.annotations.*;
import org.testng.asserts.SoftAssert;
import static org.testng.Assert.*;
import org.openqa.selenium.remote.BrowserType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import java.net.MalformedURLException;
import java.net.URL;
public class TestCase {
static RemoteWebDriver driver;
static String LastGeneratedName__;
@BeforeSuite(alwaysRun = true)
public static void createDriver() throws MalformedURLException {
logStatus("driver", "Initializing driver", "Started");
final DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setBrowserName(BrowserType.CHROME);
driver = new RemoteWebDriver(new URL("http://localhost:8082/wd/hub"), capabilities);
logStatus("driver", "Initializing driver", "Success");
}
public static void logStatus(String type, String message, String status) {
System.out.println(String.format("%s | %s | %s | %s", String.valueOf(java.time.LocalDateTime.now()), type,
message, status));
}
public static void registerNewser() throws InterruptedException
{ SoftAssert sa = new SoftAssert();
Register registration = new Register(driver);
registration.navigateToRegisterPage();
sa.assertTrue(registration.registerUser("testUser", "abc@123", true),"Failed to create a new user ");
LastGeneratedName__ = registration.lastGeneratedUsername;
}
@Test(description = "Verify if new user can be created and logged in ")
public static void TestCase01() throws InterruptedException {
registerNewser();
String lastGeneratedUserName = LastGeneratedName__;
Login login = new Login(driver);
login.navigateToLoginPage();
Boolean status = login.performLogin(lastGeneratedUserName, "abc@123");
assertTrue(status);
}
@AfterSuite
public static void quitDriver()
{
driver.close();
driver.quit();
logStatus("driver", "Quitting driver", "Success");
}
}
......@@ -9,10 +9,13 @@ import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.testng.asserts.Assertion;
import QKART_TestNG.pages.Register;
import QKART_TestNG.pages.Login;
public class TestPages {
static RemoteWebDriver driver;
static Assertion assertion = new Assertion();
// Method to help us log our Unit Tests
public static void logStatus(String type, String message, String status) {
......@@ -21,7 +24,7 @@ public class TestPages {
}
// Iinitialize webdriver for our Unit Tests
@BeforeClass(alwaysRun = true, enabled = true)
@BeforeClass(alwaysRun = true, enabled = false)
public static void createDriver() throws MalformedURLException {
logStatus("driver", "Initializing driver", "Started");
final DesiredCapabilities capabilities = new DesiredCapabilities();
......@@ -34,28 +37,128 @@ public class TestPages {
// TODO: Use the following to test --navigateToRegisterPage()-- method
@Test(description = "Verify functionality of - navigate to register page", enabled = true)
@Test(description = "Verify functionality of - navigate to register page", enabled = false)
public static void testRegister_navigateToRegisterPage() {
Assertion assertion = new Assertion();
logStatus("Page test", "navigation to register page", "started");
logStatus("Register Page test", "navigation to register page", "started");
try {
Register register = new Register(driver);
register.navigateToRegisterPage();
assertion.assertTrue(driver.getCurrentUrl()=="https://crio-qkart-frontend-qa.vercel.app/register");
logStatus("Page test", "navigation to register page", "success");
assertion.assertTrue(driver.getCurrentUrl().endsWith("/register"));
logStatus("Register Page test", "navigation to register page", "success");
} catch (Exception e) {
logStatus("Page test", "navigation to register page", "failed");
logStatus("Register Page test", "navigation to register page", "failed");
e.printStackTrace();
}
}
// TODO: Use the following to test --registerUser()-- method
@Test(description = "Verify functionality of - navigate to register page - [positive]",
enabled = false)
public static void testRegister_registerUser_pos() {
logStatus("Register Page test", "register user (positive)", "started");
try {
Register register = new Register(driver);
register.navigateToRegisterPage();
Boolean status = register.registerUser("example@gmail", "abcd123123!@#", true);
assertion.assertTrue(status, "registerUser method returned false!");
assertion.assertTrue(driver.getCurrentUrl().endsWith("/login"),
"we are still not in login page after registration!");
logStatus("Register Page test", "register user (positive)", "success");
} catch (Exception e) {
logStatus("Register Page test", "register user (positive)", "failed");
e.printStackTrace();
}
}
@Test(description = "Verify functionality of - navigate to register page - [negative]",
enabled = false)
public static void testRegister_registerUser_neg() {
logStatus("Register Page test", "register user (negative)", "started");
try {
Register register = new Register(driver);
register.navigateToRegisterPage();
Boolean status = register.registerUser("example@gmail", "abcd123123!@#", true);
assertion.assertTrue(status, "First registration unsuccessful! (unexpected)");
try {
register.navigateToRegisterPage();
status = register.registerUser(register.lastGeneratedUsername, "abcd234234!@#",
false);
} catch (Exception e) {
status = false;
}
assertion.assertFalse(status, "Second registration successful... (unexpected)");
assertion.assertTrue(driver.getCurrentUrl().endsWith("/register"),
"Expected to still be on register page--repeat registration");
logStatus("Register Page test", "register user (negative)", "success");
} catch (Exception e) {
logStatus("Register Page test", "register user (negative)", "failed");
e.printStackTrace();
}
}
// TODO: Use the following to test --navigateToLoginPage()-- method
@Test(description = "Verify functionality of - navigate to login page", enabled = false)
public static void testLogin_navigateToLoginPage() {
logStatus("Login Page test", "navigation to login page", "started");
try {
Login login = new Login(driver);
login.navigateToLoginPage();
assertion.assertTrue(driver.getCurrentUrl().endsWith("/login"));
logStatus("Login Page test", "navigation to login page", "success");
} catch (Exception e) {
logStatus("Login Page test", "navigation to login page", "failed");
e.printStackTrace();
}
}
// TODO: use the following to test --performLogin()-- method
@Test(description = "Verify functionality of - perform login", enabled = false)
public static void testLogin_performLogin() {
logStatus("Login Page test", "perform login", "started");
try {
Register register = new Register(driver);
register.navigateToRegisterPage();
register.registerUser("example@gmail", "abcd123123!@#", true);
Login login = new Login(driver);
login.navigateToLoginPage();
Boolean status = login.performLogin(register.lastGeneratedUsername, "abcd123123!@#");
assertion.assertTrue(status, "Login unsuccessful!");
logStatus("Login Page test", "perform login", "success");
} catch (Exception e) {
logStatus("Login Page test", "perform login", "failed");
e.printStackTrace();
}
}
// TODO: use the following to test --verifyUserLoggedIn()-- method
@Test(description = "Verify functionality of - verify login", enabled = false)
public static void testLogin_verifyUserLoggedIn() {
logStatus("Login Page test", "verify login", "started");
try {
Register register = new Register(driver);
register.navigateToRegisterPage();
register.registerUser("example@gmail", "abcd123123!@#", true);
Login login = new Login(driver);
login.navigateToLoginPage();
login.performLogin(register.lastGeneratedUsername, "abcd123123!@#");
Boolean status = login.verifyUserLoggedIn(register.lastGeneratedUsername);
assertion.assertTrue(status, "Login not verified!");
logStatus("Login Page test", "verify login", "success");
} catch (Exception e) {
logStatus("Login Page test", "verify login", "failed");
e.printStackTrace();
}
}
// TODO: Implement Rest of Unit Tests Here-
// Quit webdriver after Unit Tests
@AfterClass(enabled = true)
@AfterClass(enabled = false)
public static void quitDriver() throws MalformedURLException {
driver.close();
driver.quit();
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment