Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
CRIO_BYTES
SELENIUM
ME_PAGE_OBJECT_MODEL
Commits
e7d42082
Commit
e7d42082
authored
1 year ago
by
CrioUser
Browse files
Options
Download
Email Patches
Plain Diff
Created solution
parent
007d83b8
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
339 additions
and
8 deletions
+339
-8
bin/test/QKART_TestNG/pages/Login.class
bin/test/QKART_TestNG/pages/Login.class
+0
-0
bin/test/QKART_TestNG/pages/Register.class
bin/test/QKART_TestNG/pages/Register.class
+0
-0
bin/test/QKART_TestNG/tests/TestCase.class
bin/test/QKART_TestNG/tests/TestCase.class
+0
-0
bin/test/QKART_TestNG/tests/TestPages.class
bin/test/QKART_TestNG/tests/TestPages.class
+0
-0
selenium-run.sh
selenium-run.sh
+34
-0
src/test/java/QKART_TestNG/pages/Login.java
src/test/java/QKART_TestNG/pages/Login.java
+65
-0
src/test/java/QKART_TestNG/pages/Register.java
src/test/java/QKART_TestNG/pages/Register.java
+66
-0
src/test/java/QKART_TestNG/tests/TestCase.java
src/test/java/QKART_TestNG/tests/TestCase.java
+63
-0
src/test/java/QKART_TestNG/tests/TestPages.java
src/test/java/QKART_TestNG/tests/TestPages.java
+111
-8
No files found.
bin/test/QKART_TestNG/pages/Login.class
0 → 100644
View file @
e7d42082
File added
This diff is collapsed.
Click to expand it.
bin/test/QKART_TestNG/pages/Register.class
0 → 100644
View file @
e7d42082
File added
This diff is collapsed.
Click to expand it.
bin/test/QKART_TestNG/tests/TestCase.class
0 → 100644
View file @
e7d42082
File added
This diff is collapsed.
Click to expand it.
bin/test/QKART_TestNG/tests/TestPages.class
View file @
e7d42082
No preview for this file type
This diff is collapsed.
Click to expand it.
selenium-run.sh
0 → 100755
View file @
e7d42082
#!/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
This diff is collapsed.
Click to expand it.
src/test/java/QKART_TestNG/pages/Login.java
0 → 100644
View file @
e7d42082
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
}
}
This diff is collapsed.
Click to expand it.
src/test/java/QKART_TestNG/pages/Register.java
0 → 100644
View file @
e7d42082
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"
);
}
}
This diff is collapsed.
Click to expand it.
src/test/java/QKART_TestNG/tests/TestCase.java
0 → 100644
View file @
e7d42082
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"
);
}
}
This diff is collapsed.
Click to expand it.
src/test/java/QKART_TestNG/tests/TestPages.java
View file @
e7d42082
...
...
@@ -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
=
tru
e
)
@BeforeClass
(
alwaysRun
=
true
,
enabled
=
fals
e
)
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
=
tru
e
)
@Test
(
description
=
"Verify functionality of - navigate to register page"
,
enabled
=
fals
e
)
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
=
tru
e
)
@AfterClass
(
enabled
=
fals
e
)
public
static
void
quitDriver
()
throws
MalformedURLException
{
driver
.
close
();
driver
.
quit
();
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment