Compare commits

...

16 Commits

Author SHA1 Message Date
Zakaria 49ba575cfd Merge pull request 'main' (#1) from Zakaria/ZenProject:main into main
Reviewed-on: #1
2024-09-29 05:51:15 +00:00
Sami 6fe7a83a5a fix: 9 - Updating Jenkinsfile 2024-09-29 01:22:17 -04:00
Sami c36e6e9336 fix: 8 - Updating Jenkinsfile 2024-09-29 01:08:07 -04:00
Sami bc25347655 fix: 7 - Updating Jenkinsfile 2024-09-29 01:00:40 -04:00
Sami a92c917c97 fix: 6 - Updating Jenkinsfile 2024-09-29 00:49:39 -04:00
Sami d730a1357d fix: 4 - Updating Jenkinsfile 2024-09-28 19:02:18 -04:00
Sami 54fbd3e326 fix: 4 - Updating Jenkinsfile 2024-09-28 18:32:03 -04:00
Sami f0dfc063e1 fix: 3 - Updating Jenkinsfile 2024-09-28 17:29:33 -04:00
Sami c72122fea2 fix: 2 - Updating Jenkinsfile 2024-09-28 17:24:58 -04:00
Sami df67108c10 fix: adding Jenkinsfile 2024-09-28 17:13:43 -04:00
Sami 72f873c8d8 fix: 4 - adding comments for test 2024-09-27 21:55:36 -04:00
Sami 4592c1d74e fix: 3 - adding comments for test 2024-09-27 21:44:53 -04:00
Sami 1a722f3d61 fix: 3 - adding comments for test 2024-09-27 21:32:39 -04:00
Sami 2d83102cdc fix: 2 - manage.window 2024-09-27 10:23:41 -04:00
Sami f0ff453c46 Zen fix: 2 2024-09-27 10:03:01 -04:00
Zakaria 587e7504c8 Merge pull request 'ExtentReportsAdded' (#1) from Sami/ZenProject:main into main
Reviewed-on: Zakaria/ZenProject#1
2024-09-26 20:40:20 +00:00
7 changed files with 315 additions and 30 deletions
+1 -1
View File
@@ -8,7 +8,7 @@
</list> </list>
</option> </option>
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_23" default="true" project-jdk-name="openjdk-23" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_22" project-jdk-name="openjdk-23" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" /> <output url="file://$PROJECT_DIR$/out" />
</component> </component>
</project> </project>
Vendored
+14
View File
@@ -0,0 +1,14 @@
pipeline {
agent {
label "agent_locke"
}
stages {
stage('Build') {
steps {
// This runs the Maven test phase
sh 'mvn test'
}
}
}
}
+226
View File
@@ -0,0 +1,226 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Zen Test Case</title>
<link rel="apple-touch-icon" href="https://cdn.jsdelivr.net/gh/extent-framework/extent-github-cdn@b00a2d0486596e73dd7326beacf352c639623a0e/commons/img/logo.png">
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/extent-framework/extent-github-cdn@b00a2d0486596e73dd7326beacf352c639623a0e/commons/img/logo.png">
<link href="https://cdn.jsdelivr.net/gh/extent-framework/extent-github-cdn@ce8b10435bcbae260c334c0d0c6b61d2c19b6168/spark/css/spark-style.css" rel="stylesheet" />
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/gh/extent-framework/extent-github-cdn@7cc78ce/spark/js/jsontree.js"></script>
<style type="text/css"></style></head><body class="spa -report standard">
<div class="app">
<div class="layout">
<div class="header navbar">
<div class="vheader">
<div class="nav-logo">
<a href="#">
<div class="logo" style="background-image: url('https://cdn.jsdelivr.net/gh/extent-framework/extent-github-cdn@b00a2d0486596e73dd7326beacf352c639623a0e/commons/img/logo.png')"></div>
</a>
</div>
<ul class="nav-left">
<li class="search-box">
<a class="search-toggle" href="#">
<i class="search-icon fa fa-search"></i>
<i class="search-icon-close fa fa-close"></i>
</a>
</li>
<li class="search-input"><input id="search-tests" class="form-control" type="text" placeholder="Search..."></li>
</ul>
<ul class="nav-right">
<li class="m-r-10">
<a href="#"><span class="badge badge-primary">Zenful</span></a>
</li>
<li class="m-r-10">
<a href="#"><span class="badge badge-primary">Sep 29, 2024 01:21:35 AM</span></a>
</li>
</ul>
</div>
</div><div class="side-nav">
<div class="side-nav-inner">
<ul class="side-nav-menu">
<li class="nav-item dropdown" onclick="toggleView('test-view')">
<a id="nav-test" class="dropdown-toggle" href="#">
<span class="ico"><i class="fa fa-list"></i></span>
</a>
</li>
<li class="nav-item dropdown" onclick="toggleView('dashboard-view')">
<a id="nav-dashboard" class="dropdown-toggle" href="#">
<span class="ico"><i class="fa fa-bar-chart"></i></span>
</a>
</li>
</ul>
</div>
</div> <div class="vcontainer">
<div class="main-content">
<div class="test-wrapper row view test-view">
<div class="test-list">
<div class="test-list-tools">
<ul class="tools pull-left">
<li><a href="#"><span class="font-size-14">Tests</span></a></li>
</ul>
<ul class="tools text-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-exclamation-circle"></i></a>
<ul id="status-toggle" class="dropdown-menu dropdown-md p-v-0">
<a class="dropdown-item" status="pass" href="#"><span>Pass</span><span class="status success"></span></a>
<div class="dropdown-divider"></div>
<a status="clear" class="dropdown-item" href="#"><span>Clear</span><span class="pull-right"><i class="fa fa-close"></i></span></a>
</ul>
</li>
</ul>
</div> <div class="test-list-wrapper scrollable">
<ul class="test-list-item">
<li class="test-item" status="pass" test-id="1"
author=""
tag=""
device="">
<div class="test-detail">
<p class="name">Test msg</p>
<p class="text-sm">
<span>1:21:37AM</span> / <span>00:00:00:000</span>
<span class="badge pass-bg log float-right">Pass</span>
</p>
</div>
<div class="test-contents d-none">
<div class="detail-head">
<div class="p-v-10">
<div class="info">
<h5 class="test-status text-pass">Test msg</h5>
<span class='badge badge-success'>09.29.2024 1:21:37AM</span>
<span class='badge badge-danger'>09.29.2024 1:21:37AM</span>
<span class='badge badge-default'>00:00:00:000</span>
&middot; <span class='uri-anchor badge badge-default'>#test-id=1</span>
<span title='Skip to the next failed step' class='badge badge-danger pointer float-right ne ml-1'><i class="fa fa-fast-forward"></i></span>
<span title='Collapse all nodes' class='badge badge-default pointer float-right ct ml-1'><i class="fa fa-compress"></i></span>
<span title='Expand all nodes' class='badge badge-default pointer float-right et'><i class="fa fa-expand"></i></span>
</div>
</div>
</div> </div>
</li>
</ul>
</div>
</div>
<div class="test-content scrollable">
<div class="test-content-tools">
<ul><li><a class="back-to-test" href="#"><i class="fa fa-arrow-left"></i></a></li></ul>
</div>
<div class="test-content-detail"><div class="detail-body"></div></div>
</div></div>
<div class="container-fluid p-4 view dashboard-view">
<div class="row">
<div class="col-md-3">
<div class="card"><div class="card-body">
<p class="m-b-0">Started</p>
<h3>Sep 29, 2024 01:21:35 AM</h3>
</div></div>
</div>
<div class="col-md-3">
<div class="card"><div class="card-body">
<p class="m-b-0">Ended</p>
<h3>Sep 29, 2024 01:21:37 AM</h3>
</div></div>
</div>
<div class="col-md-3">
<div class="card"><div class="card-body">
<p class="m-b-0 text-pass">Tests Passed</p>
<h3>1</h3>
</div></div>
</div>
<div class="col-md-3">
<div class="card"><div class="card-body">
<p class="m-b-0 text-fail">Tests Failed</p>
<h3>0</h3>
</div></div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h6 class="card-title">Tests</h6>
</div>
<div class="card-body">
<div class="">
<canvas id='parent-analysis' width='115' height='90'></canvas>
</div>
</div>
<div class="card-footer">
<div><small data-tooltip='100%'>
<b>1</b> tests passed
</small>
</div>
<div>
<small data-tooltip='0%'><b>0</b> tests failed,
<b>0</b> skipped, <b data-tooltip='0%'>0</b> others
</small>
</div>
</div>
</div>
</div>
</div>
<div class="row"><div class="col-md-12">
<div class="card"><div class="card-header"><p>Timeline</p></div>
<div class="card-body pt-0"><div>
<canvas id="timeline" height="120"></canvas>
</div></div>
</div>
</div></div>
<script>
var timeline = {
"Test msg":0
};
</script>
<div class="row">
<div class="col-lg-6 col-md-12 sysenv-container">
<div class="card">
<div class="card-header"><p>System/Environment</p></div>
<div class="card-body pb-0 pt-0"><table class="table table-sm table-bordered">
<thead><tr class="bg-gray"><th>Name</th><th>Value</th></tr></thead>
<tbody>
<tr>
<td>Tester ID: </td>
<td>Sami</td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
</div>
<script>
var statusGroup = {
parentCount: 5,
passParent: 1,
failParent: 0,
warningParent: 0,
skipParent: 0,
childCount: 5,
passChild: 0,
failChild: 0,
warningChild: 0,
skipChild: 0,
infoChild: 0,
grandChildCount: 5,
passGrandChild: 0,
failGrandChild: 0,
warningGrandChild: 0,
skipGrandChild: 0,
infoGrandChild: 0,
eventsCount: 5,
passEvents: 0,
failEvents: 0,
warningEvents: 0,
skipEvents: 0,
infoEvents: 0
};
</script> </div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/gh/extent-framework/extent-github-cdn@c05cd28cde1617b9d0c05a831daff6cb97fd9fd5/spark/js/spark-script.js"></script>
<script type="text/javascript"></script></body>
</html>
@@ -2,27 +2,31 @@ package zacksolutions.base;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.time.Duration;
import java.util.Properties; import java.util.Properties;
import com.aventstack.extentreports.ExtentTest; import com.aventstack.extentreports.ExtentTest;
import com.aventstack.extentreports.reporter.ExtentSparkReporter; import com.aventstack.extentreports.reporter.ExtentSparkReporter;
import com.aventstack.extentreports.ExtentReports; import com.aventstack.extentreports.ExtentReports;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxDriver;
public class Initialization { public class Initialization {
// let's set up our variables
public static WebDriver driver; public static WebDriver driver;
public static Properties prop; public static Properties prop;
public static ExtentReports extent; public static ExtentReports extent;
public static ExtentTest test; public static ExtentTest test;
public Initialization() { public Initialization() {
// let's use the config.properties file to set up our global variables...
try { try {
prop = new Properties(); prop = new Properties();
FileInputStream fis = new FileInputStream("/home/ilyes/SeleniumPractice/Zenful/src/main/java/zacksolutions/config/config.properties"); FileInputStream fis = new FileInputStream(
System.getProperty("user.dir") + "/src/main/java/zacksolutions/config/config.properties");
prop.load(fis); prop.load(fis);
} catch (IOException e) { } catch (IOException e) {
@@ -33,18 +37,43 @@ public class Initialization {
} }
public void BrowserInit() { public void BrowserInit() {
// our EXTENTREPORTS SETUP!
String path = System.getProperty("user.dir") + "/reports/index.html"; String path = System.getProperty("user.dir") + "/reports/index.html";
ExtentSparkReporter spark = new ExtentSparkReporter(path); ExtentSparkReporter spark = new ExtentSparkReporter(path);
spark.config().setDocumentTitle("Zen Test Case"); spark.config().setDocumentTitle("Zen Test Case");
spark.config().setReportName("Zenful"); spark.config().setReportName("Zenful");
extent = new ExtentReports(); extent = new ExtentReports();
extent.attachReporter(spark); extent.attachReporter(spark);
extent.setSystemInfo("Test Done By: ", "Sami"); extent.setSystemInfo("Tester ID: ", "Sami");
String browsername = prop.getProperty("browserF");
// conditioning our WebDriver with an if statement
String browsername = prop.getProperty("browserC");
// launching FireFox
if (browsername.equalsIgnoreCase("firefox")) { if (browsername.equalsIgnoreCase("firefox")) {
System.setProperty("web-driver.gecko.driver","/home/ilyes/SeleniumPractice/Zenful/drivers/geckodriver"); // System.setProperty("web-driver.gecko.driver","user.dir" +
driver = new FirefoxDriver(); // "/drivers/geckodriver");
// driver = new FirefoxDriver();
driver.get(prop.getProperty("url")); driver.get(prop.getProperty("url"));
} }
// launching Chrome
if (browsername.equalsIgnoreCase("chrome")) {
// System.setProperty("web-driver.gecko.driver", "user.dir" +
// "/drivers/chromedriver");
// driver = new ChromeDriver();
ChromeOptions options = new ChromeOptions();
driver = new ChromeDriver(options);
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
options.addArguments("--headless");
options.addArguments("--remote-debugging-port=9222");
options.setBinary("/usr/bin/google-chrome");
driver.get(prop.getProperty("url"));
}
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
} }
} }
@@ -6,6 +6,7 @@ import org.openqa.selenium.support.PageFactory;
import zacksolutions.base.Initialization; import zacksolutions.base.Initialization;
public class HomePage extends Initialization { public class HomePage extends Initialization {
//Using PageFactory Object Model we get our elemets
@FindBy(id="message") @FindBy(id="message")
WebElement message; WebElement message;
+24 -21
View File
@@ -7,27 +7,30 @@ import org.testng.annotations.Test;
import zacksolutions.base.Initialization; import zacksolutions.base.Initialization;
import zacksolutions.pages.HomePage; import zacksolutions.pages.HomePage;
public class HomePageTest extends Initialization { public class HomePageTest extends Initialization {
HomePage homePage; HomePage homePage;
public HomePageTest(){
super(); public HomePageTest() {
} super();
@BeforeTest }
public void setUp(){
BrowserInit(); @BeforeTest
homePage = new HomePage(); public void setUp() {
} BrowserInit();
@Test homePage = new HomePage();
public void TextTest() throws InterruptedException { }
HomePage hp = new HomePage();
hp.insertText(); @Test
hp.textConfirmation(); public void TextTest() throws InterruptedException {
Assert.assertEquals(hp.textConfirmation(), "4 8 15 16 23 42"); HomePage hp = new HomePage();
} hp.insertText();
@AfterTest hp.textConfirmation();
public void tearDown(){ Assert.assertEquals(hp.textConfirmation(), "4 8 15 16 23 42");
driver.close(); }
}
@AfterTest
public void tearDown() {
driver.close();
}
} }
+12
View File
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Test Suite">
<test verbose="2" preserve-order="true" name="/home/ilyes/SeleniumPractice/Zenful">
<classes>
<class name="zacksolutions.HomePageTest">
<methods><include name="TextTest"/>
</methods>
</class>
</classes>
</test>
</suite>