First Commit
This commit is contained in:
commit
ce1fb0b1fe
33
.gitignore
vendored
Normal file
33
.gitignore
vendored
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
HELP.md
|
||||||
|
target/
|
||||||
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
|
!**/src/main/**/target/
|
||||||
|
!**/src/test/**/target/
|
||||||
|
|
||||||
|
### STS ###
|
||||||
|
.apt_generated
|
||||||
|
.classpath
|
||||||
|
.factorypath
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.springBeans
|
||||||
|
.sts4-cache
|
||||||
|
|
||||||
|
### IntelliJ IDEA ###
|
||||||
|
.idea
|
||||||
|
*.iws
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
|
||||||
|
### NetBeans ###
|
||||||
|
/nbproject/private/
|
||||||
|
/nbbuild/
|
||||||
|
/dist/
|
||||||
|
/nbdist/
|
||||||
|
/.nb-gradle/
|
||||||
|
build/
|
||||||
|
!**/src/main/**/build/
|
||||||
|
!**/src/test/**/build/
|
||||||
|
|
||||||
|
### VS Code ###
|
||||||
|
.vscode/
|
117
.mvn/wrapper/MavenWrapperDownloader.java
vendored
Normal file
117
.mvn/wrapper/MavenWrapperDownloader.java
vendored
Normal file
|
@ -0,0 +1,117 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2007-present the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
import java.net.*;
|
||||||
|
import java.io.*;
|
||||||
|
import java.nio.channels.*;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
public class MavenWrapperDownloader {
|
||||||
|
|
||||||
|
private static final String WRAPPER_VERSION = "0.5.6";
|
||||||
|
/**
|
||||||
|
* Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
|
||||||
|
*/
|
||||||
|
private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
|
||||||
|
+ WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
|
||||||
|
* use instead of the default one.
|
||||||
|
*/
|
||||||
|
private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
|
||||||
|
".mvn/wrapper/maven-wrapper.properties";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Path where the maven-wrapper.jar will be saved to.
|
||||||
|
*/
|
||||||
|
private static final String MAVEN_WRAPPER_JAR_PATH =
|
||||||
|
".mvn/wrapper/maven-wrapper.jar";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of the property which should be used to override the default download url for the wrapper.
|
||||||
|
*/
|
||||||
|
private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
|
||||||
|
|
||||||
|
public static void main(String args[]) {
|
||||||
|
System.out.println("- Downloader started");
|
||||||
|
File baseDirectory = new File(args[0]);
|
||||||
|
System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
|
||||||
|
|
||||||
|
// If the maven-wrapper.properties exists, read it and check if it contains a custom
|
||||||
|
// wrapperUrl parameter.
|
||||||
|
File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
|
||||||
|
String url = DEFAULT_DOWNLOAD_URL;
|
||||||
|
if(mavenWrapperPropertyFile.exists()) {
|
||||||
|
FileInputStream mavenWrapperPropertyFileInputStream = null;
|
||||||
|
try {
|
||||||
|
mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
|
||||||
|
Properties mavenWrapperProperties = new Properties();
|
||||||
|
mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
|
||||||
|
url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if(mavenWrapperPropertyFileInputStream != null) {
|
||||||
|
mavenWrapperPropertyFileInputStream.close();
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
// Ignore ...
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println("- Downloading from: " + url);
|
||||||
|
|
||||||
|
File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
|
||||||
|
if(!outputFile.getParentFile().exists()) {
|
||||||
|
if(!outputFile.getParentFile().mkdirs()) {
|
||||||
|
System.out.println(
|
||||||
|
"- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
|
||||||
|
try {
|
||||||
|
downloadFileFromURL(url, outputFile);
|
||||||
|
System.out.println("Done");
|
||||||
|
System.exit(0);
|
||||||
|
} catch (Throwable e) {
|
||||||
|
System.out.println("- Error downloading");
|
||||||
|
e.printStackTrace();
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void downloadFileFromURL(String urlString, File destination) throws Exception {
|
||||||
|
if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
|
||||||
|
String username = System.getenv("MVNW_USERNAME");
|
||||||
|
char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
|
||||||
|
Authenticator.setDefault(new Authenticator() {
|
||||||
|
@Override
|
||||||
|
protected PasswordAuthentication getPasswordAuthentication() {
|
||||||
|
return new PasswordAuthentication(username, password);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
URL website = new URL(urlString);
|
||||||
|
ReadableByteChannel rbc;
|
||||||
|
rbc = Channels.newChannel(website.openStream());
|
||||||
|
FileOutputStream fos = new FileOutputStream(destination);
|
||||||
|
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
|
||||||
|
fos.close();
|
||||||
|
rbc.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
BIN
.mvn/wrapper/maven-wrapper.jar
vendored
Normal file
BIN
.mvn/wrapper/maven-wrapper.jar
vendored
Normal file
Binary file not shown.
2
.mvn/wrapper/maven-wrapper.properties
vendored
Normal file
2
.mvn/wrapper/maven-wrapper.properties
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
|
||||||
|
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
|
310
mvnw
vendored
Normal file
310
mvnw
vendored
Normal file
|
@ -0,0 +1,310 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
# or more contributor license agreements. See the NOTICE file
|
||||||
|
# distributed with this work for additional information
|
||||||
|
# regarding copyright ownership. The ASF licenses this file
|
||||||
|
# to you under the Apache License, Version 2.0 (the
|
||||||
|
# "License"); you may not use this file except in compliance
|
||||||
|
# with the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing,
|
||||||
|
# software distributed under the License is distributed on an
|
||||||
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
# KIND, either express or implied. See the License for the
|
||||||
|
# specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# Maven Start Up Batch script
|
||||||
|
#
|
||||||
|
# Required ENV vars:
|
||||||
|
# ------------------
|
||||||
|
# JAVA_HOME - location of a JDK home dir
|
||||||
|
#
|
||||||
|
# Optional ENV vars
|
||||||
|
# -----------------
|
||||||
|
# M2_HOME - location of maven2's installed home dir
|
||||||
|
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
|
||||||
|
# e.g. to debug Maven itself, use
|
||||||
|
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
|
||||||
|
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if [ -z "$MAVEN_SKIP_RC" ] ; then
|
||||||
|
|
||||||
|
if [ -f /etc/mavenrc ] ; then
|
||||||
|
. /etc/mavenrc
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "$HOME/.mavenrc" ] ; then
|
||||||
|
. "$HOME/.mavenrc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
# OS specific support. $var _must_ be set to either true or false.
|
||||||
|
cygwin=false;
|
||||||
|
darwin=false;
|
||||||
|
mingw=false
|
||||||
|
case "`uname`" in
|
||||||
|
CYGWIN*) cygwin=true ;;
|
||||||
|
MINGW*) mingw=true;;
|
||||||
|
Darwin*) darwin=true
|
||||||
|
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
|
||||||
|
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
|
||||||
|
if [ -z "$JAVA_HOME" ]; then
|
||||||
|
if [ -x "/usr/libexec/java_home" ]; then
|
||||||
|
export JAVA_HOME="`/usr/libexec/java_home`"
|
||||||
|
else
|
||||||
|
export JAVA_HOME="/Library/Java/Home"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -z "$JAVA_HOME" ] ; then
|
||||||
|
if [ -r /etc/gentoo-release ] ; then
|
||||||
|
JAVA_HOME=`java-config --jre-home`
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$M2_HOME" ] ; then
|
||||||
|
## resolve links - $0 may be a link to maven's home
|
||||||
|
PRG="$0"
|
||||||
|
|
||||||
|
# need this for relative symlinks
|
||||||
|
while [ -h "$PRG" ] ; do
|
||||||
|
ls=`ls -ld "$PRG"`
|
||||||
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||||
|
if expr "$link" : '/.*' > /dev/null; then
|
||||||
|
PRG="$link"
|
||||||
|
else
|
||||||
|
PRG="`dirname "$PRG"`/$link"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
saveddir=`pwd`
|
||||||
|
|
||||||
|
M2_HOME=`dirname "$PRG"`/..
|
||||||
|
|
||||||
|
# make it fully qualified
|
||||||
|
M2_HOME=`cd "$M2_HOME" && pwd`
|
||||||
|
|
||||||
|
cd "$saveddir"
|
||||||
|
# echo Using m2 at $M2_HOME
|
||||||
|
fi
|
||||||
|
|
||||||
|
# For Cygwin, ensure paths are in UNIX format before anything is touched
|
||||||
|
if $cygwin ; then
|
||||||
|
[ -n "$M2_HOME" ] &&
|
||||||
|
M2_HOME=`cygpath --unix "$M2_HOME"`
|
||||||
|
[ -n "$JAVA_HOME" ] &&
|
||||||
|
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
||||||
|
[ -n "$CLASSPATH" ] &&
|
||||||
|
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
# For Mingw, ensure paths are in UNIX format before anything is touched
|
||||||
|
if $mingw ; then
|
||||||
|
[ -n "$M2_HOME" ] &&
|
||||||
|
M2_HOME="`(cd "$M2_HOME"; pwd)`"
|
||||||
|
[ -n "$JAVA_HOME" ] &&
|
||||||
|
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$JAVA_HOME" ]; then
|
||||||
|
javaExecutable="`which javac`"
|
||||||
|
if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
|
||||||
|
# readlink(1) is not available as standard on Solaris 10.
|
||||||
|
readLink=`which readlink`
|
||||||
|
if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
|
||||||
|
if $darwin ; then
|
||||||
|
javaHome="`dirname \"$javaExecutable\"`"
|
||||||
|
javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
|
||||||
|
else
|
||||||
|
javaExecutable="`readlink -f \"$javaExecutable\"`"
|
||||||
|
fi
|
||||||
|
javaHome="`dirname \"$javaExecutable\"`"
|
||||||
|
javaHome=`expr "$javaHome" : '\(.*\)/bin'`
|
||||||
|
JAVA_HOME="$javaHome"
|
||||||
|
export JAVA_HOME
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$JAVACMD" ] ; then
|
||||||
|
if [ -n "$JAVA_HOME" ] ; then
|
||||||
|
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||||
|
# IBM's JDK on AIX uses strange locations for the executables
|
||||||
|
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||||
|
else
|
||||||
|
JAVACMD="$JAVA_HOME/bin/java"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
JAVACMD="`which java`"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -x "$JAVACMD" ] ; then
|
||||||
|
echo "Error: JAVA_HOME is not defined correctly." >&2
|
||||||
|
echo " We cannot execute $JAVACMD" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$JAVA_HOME" ] ; then
|
||||||
|
echo "Warning: JAVA_HOME environment variable is not set."
|
||||||
|
fi
|
||||||
|
|
||||||
|
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
|
||||||
|
|
||||||
|
# traverses directory structure from process work directory to filesystem root
|
||||||
|
# first directory with .mvn subdirectory is considered project base directory
|
||||||
|
find_maven_basedir() {
|
||||||
|
|
||||||
|
if [ -z "$1" ]
|
||||||
|
then
|
||||||
|
echo "Path not specified to find_maven_basedir"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
basedir="$1"
|
||||||
|
wdir="$1"
|
||||||
|
while [ "$wdir" != '/' ] ; do
|
||||||
|
if [ -d "$wdir"/.mvn ] ; then
|
||||||
|
basedir=$wdir
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
|
||||||
|
if [ -d "${wdir}" ]; then
|
||||||
|
wdir=`cd "$wdir/.."; pwd`
|
||||||
|
fi
|
||||||
|
# end of workaround
|
||||||
|
done
|
||||||
|
echo "${basedir}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# concatenates all lines of a file
|
||||||
|
concat_lines() {
|
||||||
|
if [ -f "$1" ]; then
|
||||||
|
echo "$(tr -s '\n' ' ' < "$1")"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
BASE_DIR=`find_maven_basedir "$(pwd)"`
|
||||||
|
if [ -z "$BASE_DIR" ]; then
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
|
||||||
|
##########################################################################################
|
||||||
|
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
|
||||||
|
# This allows using the maven wrapper in projects that prohibit checking in binary data.
|
||||||
|
##########################################################################################
|
||||||
|
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
|
||||||
|
if [ "$MVNW_VERBOSE" = true ]; then
|
||||||
|
echo "Found .mvn/wrapper/maven-wrapper.jar"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ "$MVNW_VERBOSE" = true ]; then
|
||||||
|
echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
|
||||||
|
fi
|
||||||
|
if [ -n "$MVNW_REPOURL" ]; then
|
||||||
|
jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
|
||||||
|
else
|
||||||
|
jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
|
||||||
|
fi
|
||||||
|
while IFS="=" read key value; do
|
||||||
|
case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
|
||||||
|
esac
|
||||||
|
done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
|
||||||
|
if [ "$MVNW_VERBOSE" = true ]; then
|
||||||
|
echo "Downloading from: $jarUrl"
|
||||||
|
fi
|
||||||
|
wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
|
||||||
|
if $cygwin; then
|
||||||
|
wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command -v wget > /dev/null; then
|
||||||
|
if [ "$MVNW_VERBOSE" = true ]; then
|
||||||
|
echo "Found wget ... using wget"
|
||||||
|
fi
|
||||||
|
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
|
||||||
|
wget "$jarUrl" -O "$wrapperJarPath"
|
||||||
|
else
|
||||||
|
wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
|
||||||
|
fi
|
||||||
|
elif command -v curl > /dev/null; then
|
||||||
|
if [ "$MVNW_VERBOSE" = true ]; then
|
||||||
|
echo "Found curl ... using curl"
|
||||||
|
fi
|
||||||
|
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
|
||||||
|
curl -o "$wrapperJarPath" "$jarUrl" -f
|
||||||
|
else
|
||||||
|
curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
if [ "$MVNW_VERBOSE" = true ]; then
|
||||||
|
echo "Falling back to using Java to download"
|
||||||
|
fi
|
||||||
|
javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
|
||||||
|
# For Cygwin, switch paths to Windows format before running javac
|
||||||
|
if $cygwin; then
|
||||||
|
javaClass=`cygpath --path --windows "$javaClass"`
|
||||||
|
fi
|
||||||
|
if [ -e "$javaClass" ]; then
|
||||||
|
if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
|
||||||
|
if [ "$MVNW_VERBOSE" = true ]; then
|
||||||
|
echo " - Compiling MavenWrapperDownloader.java ..."
|
||||||
|
fi
|
||||||
|
# Compiling the Java class
|
||||||
|
("$JAVA_HOME/bin/javac" "$javaClass")
|
||||||
|
fi
|
||||||
|
if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
|
||||||
|
# Running the downloader
|
||||||
|
if [ "$MVNW_VERBOSE" = true ]; then
|
||||||
|
echo " - Running MavenWrapperDownloader.java ..."
|
||||||
|
fi
|
||||||
|
("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
##########################################################################################
|
||||||
|
# End of extension
|
||||||
|
##########################################################################################
|
||||||
|
|
||||||
|
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
|
||||||
|
if [ "$MVNW_VERBOSE" = true ]; then
|
||||||
|
echo $MAVEN_PROJECTBASEDIR
|
||||||
|
fi
|
||||||
|
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
|
||||||
|
|
||||||
|
# For Cygwin, switch paths to Windows format before running java
|
||||||
|
if $cygwin; then
|
||||||
|
[ -n "$M2_HOME" ] &&
|
||||||
|
M2_HOME=`cygpath --path --windows "$M2_HOME"`
|
||||||
|
[ -n "$JAVA_HOME" ] &&
|
||||||
|
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
|
||||||
|
[ -n "$CLASSPATH" ] &&
|
||||||
|
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
|
||||||
|
[ -n "$MAVEN_PROJECTBASEDIR" ] &&
|
||||||
|
MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Provide a "standardized" way to retrieve the CLI args that will
|
||||||
|
# work with both Windows and non-Windows executions.
|
||||||
|
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
|
||||||
|
export MAVEN_CMD_LINE_ARGS
|
||||||
|
|
||||||
|
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
|
||||||
|
|
||||||
|
exec "$JAVACMD" \
|
||||||
|
$MAVEN_OPTS \
|
||||||
|
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
|
||||||
|
"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
|
||||||
|
${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
|
182
mvnw.cmd
vendored
Normal file
182
mvnw.cmd
vendored
Normal file
|
@ -0,0 +1,182 @@
|
||||||
|
@REM ----------------------------------------------------------------------------
|
||||||
|
@REM Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
@REM or more contributor license agreements. See the NOTICE file
|
||||||
|
@REM distributed with this work for additional information
|
||||||
|
@REM regarding copyright ownership. The ASF licenses this file
|
||||||
|
@REM to you under the Apache License, Version 2.0 (the
|
||||||
|
@REM "License"); you may not use this file except in compliance
|
||||||
|
@REM with the License. You may obtain a copy of the License at
|
||||||
|
@REM
|
||||||
|
@REM https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
@REM
|
||||||
|
@REM Unless required by applicable law or agreed to in writing,
|
||||||
|
@REM software distributed under the License is distributed on an
|
||||||
|
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
@REM KIND, either express or implied. See the License for the
|
||||||
|
@REM specific language governing permissions and limitations
|
||||||
|
@REM under the License.
|
||||||
|
@REM ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@REM ----------------------------------------------------------------------------
|
||||||
|
@REM Maven Start Up Batch script
|
||||||
|
@REM
|
||||||
|
@REM Required ENV vars:
|
||||||
|
@REM JAVA_HOME - location of a JDK home dir
|
||||||
|
@REM
|
||||||
|
@REM Optional ENV vars
|
||||||
|
@REM M2_HOME - location of maven2's installed home dir
|
||||||
|
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
|
||||||
|
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
|
||||||
|
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
|
||||||
|
@REM e.g. to debug Maven itself, use
|
||||||
|
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
|
||||||
|
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
|
||||||
|
@REM ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
|
||||||
|
@echo off
|
||||||
|
@REM set title of command window
|
||||||
|
title %0
|
||||||
|
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
|
||||||
|
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
|
||||||
|
|
||||||
|
@REM set %HOME% to equivalent of $HOME
|
||||||
|
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
|
||||||
|
|
||||||
|
@REM Execute a user defined script before this one
|
||||||
|
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
|
||||||
|
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
|
||||||
|
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
|
||||||
|
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
|
||||||
|
:skipRcPre
|
||||||
|
|
||||||
|
@setlocal
|
||||||
|
|
||||||
|
set ERROR_CODE=0
|
||||||
|
|
||||||
|
@REM To isolate internal variables from possible post scripts, we use another setlocal
|
||||||
|
@setlocal
|
||||||
|
|
||||||
|
@REM ==== START VALIDATION ====
|
||||||
|
if not "%JAVA_HOME%" == "" goto OkJHome
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo Error: JAVA_HOME not found in your environment. >&2
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the >&2
|
||||||
|
echo location of your Java installation. >&2
|
||||||
|
echo.
|
||||||
|
goto error
|
||||||
|
|
||||||
|
:OkJHome
|
||||||
|
if exist "%JAVA_HOME%\bin\java.exe" goto init
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo Error: JAVA_HOME is set to an invalid directory. >&2
|
||||||
|
echo JAVA_HOME = "%JAVA_HOME%" >&2
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the >&2
|
||||||
|
echo location of your Java installation. >&2
|
||||||
|
echo.
|
||||||
|
goto error
|
||||||
|
|
||||||
|
@REM ==== END VALIDATION ====
|
||||||
|
|
||||||
|
:init
|
||||||
|
|
||||||
|
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
|
||||||
|
@REM Fallback to current working directory if not found.
|
||||||
|
|
||||||
|
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
|
||||||
|
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
|
||||||
|
|
||||||
|
set EXEC_DIR=%CD%
|
||||||
|
set WDIR=%EXEC_DIR%
|
||||||
|
:findBaseDir
|
||||||
|
IF EXIST "%WDIR%"\.mvn goto baseDirFound
|
||||||
|
cd ..
|
||||||
|
IF "%WDIR%"=="%CD%" goto baseDirNotFound
|
||||||
|
set WDIR=%CD%
|
||||||
|
goto findBaseDir
|
||||||
|
|
||||||
|
:baseDirFound
|
||||||
|
set MAVEN_PROJECTBASEDIR=%WDIR%
|
||||||
|
cd "%EXEC_DIR%"
|
||||||
|
goto endDetectBaseDir
|
||||||
|
|
||||||
|
:baseDirNotFound
|
||||||
|
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
|
||||||
|
cd "%EXEC_DIR%"
|
||||||
|
|
||||||
|
:endDetectBaseDir
|
||||||
|
|
||||||
|
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
|
||||||
|
|
||||||
|
@setlocal EnableExtensions EnableDelayedExpansion
|
||||||
|
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
|
||||||
|
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
|
||||||
|
|
||||||
|
:endReadAdditionalConfig
|
||||||
|
|
||||||
|
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
|
||||||
|
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
|
||||||
|
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
|
||||||
|
|
||||||
|
set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
|
||||||
|
|
||||||
|
FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
|
||||||
|
IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
|
||||||
|
)
|
||||||
|
|
||||||
|
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
|
||||||
|
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
|
||||||
|
if exist %WRAPPER_JAR% (
|
||||||
|
if "%MVNW_VERBOSE%" == "true" (
|
||||||
|
echo Found %WRAPPER_JAR%
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
if not "%MVNW_REPOURL%" == "" (
|
||||||
|
SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
|
||||||
|
)
|
||||||
|
if "%MVNW_VERBOSE%" == "true" (
|
||||||
|
echo Couldn't find %WRAPPER_JAR%, downloading it ...
|
||||||
|
echo Downloading from: %DOWNLOAD_URL%
|
||||||
|
)
|
||||||
|
|
||||||
|
powershell -Command "&{"^
|
||||||
|
"$webclient = new-object System.Net.WebClient;"^
|
||||||
|
"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
|
||||||
|
"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
|
||||||
|
"}"^
|
||||||
|
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
|
||||||
|
"}"
|
||||||
|
if "%MVNW_VERBOSE%" == "true" (
|
||||||
|
echo Finished downloading %WRAPPER_JAR%
|
||||||
|
)
|
||||||
|
)
|
||||||
|
@REM End of extension
|
||||||
|
|
||||||
|
@REM Provide a "standardized" way to retrieve the CLI args that will
|
||||||
|
@REM work with both Windows and non-Windows executions.
|
||||||
|
set MAVEN_CMD_LINE_ARGS=%*
|
||||||
|
|
||||||
|
%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
|
||||||
|
if ERRORLEVEL 1 goto error
|
||||||
|
goto end
|
||||||
|
|
||||||
|
:error
|
||||||
|
set ERROR_CODE=1
|
||||||
|
|
||||||
|
:end
|
||||||
|
@endlocal & set ERROR_CODE=%ERROR_CODE%
|
||||||
|
|
||||||
|
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
|
||||||
|
@REM check for post script, once with legacy .bat ending and once with .cmd ending
|
||||||
|
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
|
||||||
|
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
|
||||||
|
:skipRcPost
|
||||||
|
|
||||||
|
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
|
||||||
|
if "%MAVEN_BATCH_PAUSE%" == "on" pause
|
||||||
|
|
||||||
|
if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
|
||||||
|
|
||||||
|
exit /B %ERROR_CODE%
|
209
pom.xml
Normal file
209
pom.xml
Normal file
|
@ -0,0 +1,209 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
|
<version>2.3.3.RELEASE</version>
|
||||||
|
<relativePath /> <!-- lookup parent from repository -->
|
||||||
|
</parent>
|
||||||
|
<groupId>com.machint.automation</groupId>
|
||||||
|
<artifactId>mautomation</artifactId>
|
||||||
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<name>mautomation</name>
|
||||||
|
|
||||||
|
<description>Automation Testing Framework</description>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<java.version>1.8</java.version>
|
||||||
|
<testcontainers.version>1.14.3</testcontainers.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-web</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.seleniumhq.selenium</groupId>
|
||||||
|
<artifactId>selenium-java</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.poi</groupId>
|
||||||
|
<artifactId>poi</artifactId>
|
||||||
|
<version>3.9</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.poi</groupId>
|
||||||
|
<artifactId>poi-ooxml</artifactId>
|
||||||
|
<version>3.9</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.poi</groupId>
|
||||||
|
<artifactId>poi-ooxml-schemas</artifactId>
|
||||||
|
<version>3.9</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.poi</groupId>
|
||||||
|
<artifactId>poi-scratchpad</artifactId>
|
||||||
|
<version>3.9</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.poi</groupId>
|
||||||
|
<artifactId>openxml4j</artifactId>
|
||||||
|
<version>1.0-beta</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.poi</groupId>
|
||||||
|
<artifactId>ooxml-schemas</artifactId>
|
||||||
|
<version>1.4</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-io</groupId>
|
||||||
|
<artifactId>commons-io</artifactId>
|
||||||
|
<version>2.6</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>info.cukes</groupId>
|
||||||
|
<artifactId>cucumber-java</artifactId>
|
||||||
|
<version>1.2.5</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>info.cukes</groupId>
|
||||||
|
<artifactId>cucumber-junit</artifactId>
|
||||||
|
<version>1.2.5</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>info.cukes</groupId>
|
||||||
|
<artifactId>cucumber-picocontainer</artifactId>
|
||||||
|
<version>1.2.5</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- https://mvnrepository.com/artifact/info.cukes/cucumber-testng -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>info.cukes</groupId>
|
||||||
|
<artifactId>cucumber-testng</artifactId>
|
||||||
|
<version>1.2.5</version>
|
||||||
|
<type>pom</type>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.masterthought</groupId>
|
||||||
|
<artifactId>cucumber-reporting</artifactId>
|
||||||
|
<version>5.0.2</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>info.cukes</groupId>
|
||||||
|
<artifactId>gherkin</artifactId>
|
||||||
|
<version>2.12.2</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- https://mvnrepository.com/artifact/com.aventstack/extentreports -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.aventstack</groupId>
|
||||||
|
<artifactId>extentreports</artifactId>
|
||||||
|
<version>3.1.5</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- https://mvnrepository.com/artifact/com.relevantcodes/extentreports -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.relevantcodes</groupId>
|
||||||
|
<artifactId>extentreports</artifactId>
|
||||||
|
<version>2.41.2</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- https://mvnrepository.com/artifact/com.vimalselvam/cucumber-extentsreport -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.vimalselvam</groupId>
|
||||||
|
<artifactId>cucumber-extentsreport</artifactId>
|
||||||
|
<version>3.1.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- https://mvnrepository.com/artifact/com.aventstack/extentreports-cucumber4-adapter -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.aventstack</groupId>
|
||||||
|
<artifactId>extentreports-cucumber4-adapter</artifactId>
|
||||||
|
<version>1.2.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>info.cukes</groupId>
|
||||||
|
<artifactId>cucumber-jvm-deps</artifactId>
|
||||||
|
<version>1.0.5</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.testng</groupId>
|
||||||
|
<artifactId>testng</artifactId>
|
||||||
|
<version>7.3.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.junit.vintage</groupId>
|
||||||
|
<artifactId>junit-vintage-engine</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.testcontainers</groupId>
|
||||||
|
<artifactId>junit-jupiter</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-devtools</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.testcontainers</groupId>
|
||||||
|
<artifactId>testcontainers-bom</artifactId>
|
||||||
|
<version>${testcontainers.version}</version>
|
||||||
|
<type>pom</type>
|
||||||
|
<scope>import</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<finalName>${artifactId}</finalName>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
</plugin><!-- <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<configuration> <suiteXmlFiles> <suiteXmlFile>${suiteXmlFile}</suiteXmlFile>>
|
||||||
|
</suiteXmlFiles> </configuration> </plugin> -->
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
</project>
|
|
@ -0,0 +1,64 @@
|
||||||
|
package com.machint.automation;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.springframework.core.io.InputStreamResource;
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import org.testng.TestListenerAdapter;
|
||||||
|
import org.testng.TestNG;
|
||||||
|
import org.testng.collections.Lists;
|
||||||
|
|
||||||
|
import com.machint.automation.model.FormObject;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
public class AutomationController {
|
||||||
|
|
||||||
|
//local
|
||||||
|
//private static final String FILE_LOCATION = "D:\\M_Automation\\MAF\\TestNGXML\\";
|
||||||
|
//private static final String REPORT_FILE_LOCATION = "D:\\M_Automation\\MAF\\TestReport\\";
|
||||||
|
//Server
|
||||||
|
private static final String FILE_LOCATION = "MAF/TestNGXML/";
|
||||||
|
private static final String REPORT_FILE_LOCATION = "MAF/TestReport/";
|
||||||
|
public static FormObject formObject;
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping(path="/run_test", consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE})
|
||||||
|
public String runTest(FormObject formData) {
|
||||||
|
formObject = formData;
|
||||||
|
System.out.println(formData);
|
||||||
|
TestListenerAdapter tla = new TestListenerAdapter();
|
||||||
|
TestNG testng = new TestNG();
|
||||||
|
List<String> suites = Lists.newArrayList();
|
||||||
|
suites.add(FILE_LOCATION+formData.getTestCase());//path to xml..
|
||||||
|
//suites.add("c:/tests/testng2.xml");
|
||||||
|
testng.setTestSuites(suites);
|
||||||
|
testng.addListener(tla);
|
||||||
|
testng.run();
|
||||||
|
|
||||||
|
return "Test Ran Successfully";
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
@GetMapping(value = "/get_xml_report")
|
||||||
|
public ResponseEntity<InputStreamResource> getXmlReport() throws IOException {
|
||||||
|
byte[] filedata = Files.readAllBytes(Paths.get(REPORT_FILE_LOCATION+"Test-Automaton-Report.html"));
|
||||||
|
ByteArrayInputStream in = new ByteArrayInputStream(filedata);
|
||||||
|
HttpHeaders headers = new HttpHeaders();
|
||||||
|
headers.add("Content-Disposition", "attachment; filename=report.html");
|
||||||
|
return ResponseEntity
|
||||||
|
.ok()
|
||||||
|
.headers(headers)
|
||||||
|
.body(new InputStreamResource(in));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
16
src/main/java/com/machint/automation/Feature/ERF.feature
Normal file
16
src/main/java/com/machint/automation/Feature/ERF.feature
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
@Pega_ERF
|
||||||
|
Feature: ERF
|
||||||
|
|
||||||
|
Scenario: ERF Process
|
||||||
|
|
||||||
|
Given User navigate to Pega Portal
|
||||||
|
When User enter project manager username and password
|
||||||
|
And Click on login button
|
||||||
|
And User verify the project manager home page title
|
||||||
|
And Click on Employee Requisition Form ERF
|
||||||
|
And User entered ERF code details
|
||||||
|
And User entered the Job Specifications details
|
||||||
|
And User entered the Competencies Required details
|
||||||
|
And User clicks on project manager submit button
|
||||||
|
Then Project manager page display the message
|
||||||
|
Then In project manager page click on logoff
|
|
@ -0,0 +1,33 @@
|
||||||
|
Feature: Login
|
||||||
|
@HRlogin
|
||||||
|
Scenario: I want to enter username and password
|
||||||
|
|
||||||
|
Given user navigate to Machint Walk-In Drive Portal
|
||||||
|
When user verify the homepage title
|
||||||
|
Then user entered the username and password in walk-in portal
|
||||||
|
And user click on login button
|
||||||
|
Then login successfully after display the search from
|
||||||
|
And user click on Profiles
|
||||||
|
And user select from and to dates
|
||||||
|
And user click on submit button
|
||||||
|
Then display the particular from and to date data
|
||||||
|
And search the profile id
|
||||||
|
And check the that particular profile id
|
||||||
|
And click on shortlist button
|
||||||
|
Then display the alert message
|
||||||
|
|
||||||
|
And user click on search icon
|
||||||
|
And user verify search page url
|
||||||
|
And user entered the Search Form details
|
||||||
|
And user click on search button
|
||||||
|
And search the profile id in search from
|
||||||
|
And check the that particular profile id in search from
|
||||||
|
And user click on Shortlist
|
||||||
|
Then display the alert messgae in search form
|
||||||
|
And user click on download selected
|
||||||
|
|
||||||
|
And user click on send mail
|
||||||
|
And user click on logout icon
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
@Insurance
|
||||||
|
Feature: Insurance
|
||||||
|
|
||||||
|
Background: I want to enter username and password
|
||||||
|
|
||||||
|
Given user navigate to parthenon page
|
||||||
|
When user validates homepage title
|
||||||
|
Then user entered the username and password
|
||||||
|
And user click on signin button
|
||||||
|
Then parthenon page should be displayed
|
||||||
|
|
||||||
|
Scenario: Insurance process
|
||||||
|
|
||||||
|
Given user click on actions
|
||||||
|
When user validates action page
|
||||||
|
And user click on Case management
|
||||||
|
And user create case in case management
|
||||||
|
And after select the product catalogue in SH - Advanced table click on select button
|
||||||
|
And click on continue button
|
||||||
|
And click on add customer button
|
||||||
|
Then in SH-Advanced Personal Details page displayed
|
||||||
|
And user enter personal details
|
||||||
|
And click on add new row in family details
|
||||||
|
And user enter family details
|
||||||
|
And click on next button
|
||||||
|
Then KYC documents page displayed
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
Feature: Registration Form
|
||||||
|
@registration
|
||||||
|
Scenario: I want to enter personal information
|
||||||
|
|
||||||
|
Given user navigate to registration form
|
||||||
|
When user validates the homepage
|
||||||
|
Then user entered the Personal Information details
|
||||||
|
And user navigate to Education Information and entered the Education Information details
|
||||||
|
And user navigate to Technical Knowledge and entered the Technical Knowledge details
|
||||||
|
Then user navigate the Other Info and entered the Other Info details
|
||||||
|
And user click on choose file and upload the resume
|
||||||
|
And click on Submit button
|
||||||
|
Then your registration process completed
|
|
@ -0,0 +1,13 @@
|
||||||
|
package com.machint.automation;
|
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
|
@SpringBootApplication
|
||||||
|
public class MautomationApplication {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SpringApplication.run(MautomationApplication.class, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
package com.machint.automation.PageObject;
|
||||||
|
|
||||||
|
import org.openqa.selenium.By;
|
||||||
|
|
||||||
|
import com.machint.automation.Utils.ActionClass;
|
||||||
|
|
||||||
|
public class ERF_PageObject extends ActionClass
|
||||||
|
{
|
||||||
|
//Login Deatails
|
||||||
|
|
||||||
|
public static String Username = "UserIdentifier";
|
||||||
|
public static String Password = "Password";
|
||||||
|
public static String Login = "//button[@id='sub']";
|
||||||
|
|
||||||
|
//After login
|
||||||
|
|
||||||
|
public static String ERF = "//span[@class='menu-item-title' and text()='Employee Requisition Form']";
|
||||||
|
public static String Position = "//input[@id='Position']";
|
||||||
|
public static String No_of_Positions = "NoOfPositions";
|
||||||
|
public static String Client_Project = "Client";
|
||||||
|
public static String Project_ID = "ProjectID";
|
||||||
|
public static String Department = "Department";
|
||||||
|
public static String Location = "Location";
|
||||||
|
public static String External_Hiring = "ExternalHiring";
|
||||||
|
public static String Reason_for_Request = "ReasonForHiring";
|
||||||
|
public static String Salary_Range = "SalaryRange";
|
||||||
|
public static String Reporting = "Reporting";
|
||||||
|
public static String Target_Date_to_Fill = "inactvIcon";
|
||||||
|
|
||||||
|
//Please tick (√) To be filled by indentor mandatorily
|
||||||
|
|
||||||
|
public static String Laptop = "//label[text()='Laptop']";
|
||||||
|
public static String Bag = "//label[text()='Bag']";
|
||||||
|
public static String HRIS = "//label[@class='rb_ rb_standard radioLabel' and text()='Yes']";
|
||||||
|
|
||||||
|
//Job Specifications
|
||||||
|
|
||||||
|
public static String Job_Responsibilities = "Responsibilities";
|
||||||
|
public static String Special_Accountabilities = "$PpyWorkPage$pAccountabilities";
|
||||||
|
public static String Additional_Inputs_to_Roles = "RoleAuthority";
|
||||||
|
|
||||||
|
//Competencies Required
|
||||||
|
public static String IFrame = "//div[@id='workarea']//div[@id='moduleGroupDiv']//div[@class='iframe-wrapper yui-module' and @style='display: block;']//div[@class='bd dynamicContainer']/iframe";
|
||||||
|
|
||||||
|
public static String Practice = "Practice";
|
||||||
|
public static String Domain = "$PpyWorkPage$pDomain";
|
||||||
|
public static String Is_Certification_Required = "IsCertificationRequired";
|
||||||
|
public static String Certifications = "//select[@name='$PpyWorkPage$pCertification']";
|
||||||
|
public static String Technical_Competency = "//span[@id='CTRL_TA']/textarea[@id='TechnicalCompetency']";
|
||||||
|
public static String Behavioural_Competency = "//textarea[@id='BehaviorCompetency']";
|
||||||
|
public static String Qualification = "//select[@id='Qualification']";
|
||||||
|
public static String Overall_Experience_In_Years = "//select[@name='$PpyWorkPage$pOverallExpYears']";
|
||||||
|
public static String Relevant_Experience_In_Years = "//select[@id='RelevantExpYears']";
|
||||||
|
public static String Submit = "//button[@class='Strong pzhc pzbutton' and text()='Submit']";
|
||||||
|
By logoff = By.xpath("//a[@onclick='pd(event);']//span[@class='menu-item-title-wrap']/span[text()='Log off']");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package com.machint.automation.PageObject;
|
||||||
|
|
||||||
|
import com.machint.automation.Utils.ActionClass;
|
||||||
|
|
||||||
|
public class HR_login_PageObject extends ActionClass
|
||||||
|
{
|
||||||
|
//login
|
||||||
|
public static String Employee_Email = "empEmailId";
|
||||||
|
public static String Password = "password";
|
||||||
|
public static String Login = "//button[@class='btn btn-primary']";
|
||||||
|
|
||||||
|
//After login page click on Profiles
|
||||||
|
public static String Profiles = "//a[@class='nav-link' and @title='Profiles']//span";
|
||||||
|
public static String From = "//input[@id='fromDate']";
|
||||||
|
public static String To = "//input[@id='toDate']";
|
||||||
|
public static String Submit = "//button[@class='btn btn-primary']";
|
||||||
|
public static String Search = "//input[@type='search']";
|
||||||
|
public static String Check = "input[onclick='unChech()']";
|
||||||
|
public static String Shortlist = "//input[@onclick='shortlistCandidate()']";
|
||||||
|
|
||||||
|
//Search Form List
|
||||||
|
public static String Search_Icon = "//*[@class='nav-link' and @title='Search']";
|
||||||
|
public static String Hiring_Plan = "//select[@name='hiringPaln' and @class='form-control']";
|
||||||
|
public static String Candidate_Shortlisted = "//select[@name='shortlist' and @class='form-control']";
|
||||||
|
public static String Highest_Qualification = "highestQualification";
|
||||||
|
public static String Specialization = "Specialization";
|
||||||
|
public static String Percentage = "percentage";
|
||||||
|
public static String Year_Of_Passing = "yop";
|
||||||
|
public static String Knowledge_In_JAVA = "java";
|
||||||
|
public static String Knowledge_In_PEGA = "pega";
|
||||||
|
public static String Knowledge_In_APPIAN = "//select[@id='appain' and @class='form-control']";
|
||||||
|
public static String Knowledge_In_RPA = "rpa";
|
||||||
|
public static String Knowledge_In_PYTHON = "python";
|
||||||
|
public static String Knowledge_In_DATABASE = "//select[@id='data' and @class='form-control']";
|
||||||
|
public static String Search_btn = "//button[@class='btn btn-primary' and text()='Search']";
|
||||||
|
// public static String Download_btn = By.xpath("//button[@class='btn btn-success']");
|
||||||
|
public static String Check_SearchFrom = "//input[@type='checkbox' and @class='checkBoxClass']";
|
||||||
|
public static String DownloadSelected = "//input[@onclick='downloadSelected(event)']";
|
||||||
|
public static String Send_Mail = "//a[@class='nav-link' and @title='Send Mail']/span";
|
||||||
|
public static String Logout = "//a[@class='nav-link' and @title='Logout']/span";
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
package com.machint.automation.PageObject;
|
||||||
|
|
||||||
|
import com.machint.automation.Utils.ActionClass;
|
||||||
|
|
||||||
|
public class Insurance_PageObject extends ActionClass
|
||||||
|
{
|
||||||
|
|
||||||
|
//Login Details
|
||||||
|
public static String Username = "un";
|
||||||
|
public static String Password = "pw";
|
||||||
|
public static String Signin = "//input[@onClick='return login_jsp.saveRemember && login_jsp.saveRemember() || true;']";
|
||||||
|
|
||||||
|
// After Login
|
||||||
|
|
||||||
|
// By iframe = By.xpath("//div[contains(@class,'CardLayout---margin_below_standard')]//div[contains(@class,'CertifiedSAILExtension---wrapping_div')]/iframe");
|
||||||
|
public static String Actions = "//div[@class='SiteMenuTab---nav_label' and text()='Actions']";
|
||||||
|
public static String Case_management = "//p[contains(@class,'ParagraphText---default_direction')]/span/span/strong[text()='Case Management']";
|
||||||
|
public static String Line_of_business = "(//div[contains(@class,'DropdownWidget---dropdown_value')])[1]";
|
||||||
|
public static String Product_category = "(//div[contains(@class,'DropdownWidget---dropdown_value')])[2]";
|
||||||
|
public static String Product = "(//div[contains(@class,'DropdownWidget---dropdown_value')])[3]";
|
||||||
|
public static String Select = "(//div[contains(@class,'ColumnLayout---width_auto')])[6]//div[@class='BoxLayout---box_body']//div[contains(@class,'ButtonLayout2---center')]//button";
|
||||||
|
// public static String Continue = "//button[contains(@class,'Button---primary appian-context-first-in-list appian-context-last-in-list')]/parent::*";
|
||||||
|
public static String Continue = "//div/button[contains(@class,'Button---primary appian-context-first-in-list appian-context-last-in-list')]";
|
||||||
|
public static String Add_customer = "//div[contains(@class,'FieldLayout---inAccentBackground')]//strong[@class='StrongText---richtext_strong' and text()='Add Customer']";
|
||||||
|
|
||||||
|
//Personal Details
|
||||||
|
|
||||||
|
public static String Title = "(//div[@class='DropdownWidget---dropdown_value DropdownWidget---placeholder'])[1]";
|
||||||
|
public static String First_name = "(//input[@class='TextInput---text TextInput---align_start'])[1]";
|
||||||
|
public static String Middle_name = "(//input[@class='TextInput---text TextInput---align_start'])[3]";
|
||||||
|
public static String Last_name = "(//input[@class='TextInput---text TextInput---align_start'])[5]";
|
||||||
|
public static String Customer_type = "(//div[contains(@class,'DropdownWidget---dropdown_value')])[2]";
|
||||||
|
public static String Mobile_number = "(//input[@class='TextInput---text TextInput---align_start'])[2]";
|
||||||
|
public static String Email = "(//input[@class='TextInput---text TextInput---align_start'])[4]";
|
||||||
|
public static String Date_of_birth = "//input[@class='DatePickerWidget---text DatePickerWidget---align_start DatePickerWidget---width_narrow']";
|
||||||
|
public static String Gender = "//div[@class='RadioSelect---choice_pair']/label[text()='Female']";
|
||||||
|
public static String Un_married = "//div[@class='RadioSelect---choice_pair']/label[text()='Un Married']";
|
||||||
|
|
||||||
|
//Family Details
|
||||||
|
|
||||||
|
public static String Add_new_row = "//a[@class='GridFooter---add_grid_row_link elements---global_a']";
|
||||||
|
public static String FamilyDetails_title = "(//div[contains(@class,'DropdownWidget---dropdown_value DropdownWidget---inEditableGridLayout')])[1]";
|
||||||
|
public static String FamilyDetails_Relation_Type = "(//div[contains(@class,'DropdownWidget---dropdown_value DropdownWidget---inEditableGridLayout')])[2]";
|
||||||
|
public static String FamilyDetails_first_name = "(//input[@class='TextInput---text TextInput---align_start TextInput---inEditableGridLayout'])[1]";
|
||||||
|
public static String FamilyDetails_last_name = "(//input[@class='TextInput---text TextInput---align_start TextInput---inEditableGridLayout'])[2]";
|
||||||
|
public static String FamilyDetails_middle_name = "(//input[@class='TextInput---text TextInput---align_start TextInput---inEditableGridLayout'])[3]";
|
||||||
|
public static String FamilyDetails_gender = "(//div[contains(@class,'DropdownWidget---dropdown_value DropdownWidget---inEditableGridLayout')])[3]";
|
||||||
|
public static String FamilyDeatils_date_of_birth = "//input[@class='DatePickerWidget---text DatePickerWidget---align_start DatePickerWidget---inEditableGridLayout']";
|
||||||
|
public static String FamilyDetails_mobile_number = "(//input[@class='TextInput---text TextInput---align_start TextInput---inEditableGridLayout'])[4]";
|
||||||
|
public static String Next = "(//div[contains(@class,'ColumnArrayLayout---standard_spacing')])[2]//button[contains(@class,'Button---btn Button---default_direction Button---primary appian-context')]";
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
package com.machint.automation.PageObject;
|
||||||
|
|
||||||
|
import com.machint.automation.Utils.ActionClass;
|
||||||
|
|
||||||
|
public class RegistrationFrom_PageObject extends ActionClass
|
||||||
|
{
|
||||||
|
//Personal Information details
|
||||||
|
public static String First_Name = "//input[@id='firstName']";
|
||||||
|
public static String Last_Name = "lastName";
|
||||||
|
public static String Contact_Number = "contactNo";
|
||||||
|
public static String Alternate_Contact_Number = "alernateContactNo";
|
||||||
|
public static String Email = "email";
|
||||||
|
public static String City = "city";
|
||||||
|
public static String Location = "Currentlocation";
|
||||||
|
public static String Permanent_Location = "Permanentlocation";
|
||||||
|
public static String Address = "//textarea[@name='address' and @class='form-control']";
|
||||||
|
|
||||||
|
//Education Information details
|
||||||
|
public static String Education_Information = "//div/h4[text()='Education Information']";
|
||||||
|
public static String Highest_Qualification = "//select[@id='qualification' and @class='form-group']";
|
||||||
|
public static String Specialization = "specialization";
|
||||||
|
public static String Percentage = "percentage";
|
||||||
|
public static String Year_Of_Passing = "yearOfPassing";
|
||||||
|
|
||||||
|
//Technical Knowledge
|
||||||
|
public static String Technical_Knowledge ="//div/h4[text()='Technical Knowledge']";
|
||||||
|
public static String Knowledge_In_JAVA = "//select[@name='java']";
|
||||||
|
public static String Knowledge_In_PEGA = "//select[@name='pega']";
|
||||||
|
public static String Knowledge_In_APPIAN = "//select[@name='appian']";
|
||||||
|
public static String Knowledge_In_RPA = "//select[@name='RPA']";
|
||||||
|
public static String Knowledge_In_PYTHON = "//select[@name='python']";
|
||||||
|
public static String Knowledge_In_DATABASE = "//select[@name='dataBase']";
|
||||||
|
|
||||||
|
//Other Info
|
||||||
|
public static String Other_Info = "//div/h4[text()='Other Info']";
|
||||||
|
public static String Source = "campaignName";
|
||||||
|
public static String Employee_referral = "//input[@name='empRef']";
|
||||||
|
public static String Message = "message";
|
||||||
|
public static String Position = "isAttended6months";
|
||||||
|
public static String Resume = "//input[@id='file']";
|
||||||
|
public static String submit = "//button[text()='Submit']";
|
||||||
|
}
|
18
src/main/java/com/machint/automation/Runner/ERF_runner.java
Normal file
18
src/main/java/com/machint/automation/Runner/ERF_runner.java
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
package com.machint.automation.Runner;
|
||||||
|
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import cucumber.api.CucumberOptions;
|
||||||
|
import cucumber.api.junit.Cucumber;
|
||||||
|
|
||||||
|
@RunWith(Cucumber.class)
|
||||||
|
@CucumberOptions(
|
||||||
|
features="MAF/Feature/ERF.feature",
|
||||||
|
glue={"com.machint.automation.StepDefinition"},
|
||||||
|
monochrome = true,
|
||||||
|
plugin = {"com.cucumber.listener.ExtentCucumberFormatter:target/AautomationExtent-ERF-reports/report.html"},
|
||||||
|
tags= {"@Pega_ERF"}
|
||||||
|
)
|
||||||
|
public class ERF_runner
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
package com.machint.automation.Runner;
|
||||||
|
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
|
import cucumber.api.CucumberOptions;
|
||||||
|
import cucumber.api.junit.Cucumber;
|
||||||
|
|
||||||
|
@RunWith(Cucumber.class)
|
||||||
|
@CucumberOptions(
|
||||||
|
features="MAF/Feature/ERF.feature",
|
||||||
|
glue={"com.machint.automation.StepDefinition"},
|
||||||
|
monochrome = true,
|
||||||
|
plugin = {"com.cucumber.listener.ExtentCucumberFormatter:target/AautomationExtent-HRlogin-reports/report.html"},
|
||||||
|
tags= {"@HRlogin"}
|
||||||
|
)
|
||||||
|
public class HR_login_Runner
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
package com.machint.automation.Runner;
|
||||||
|
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import cucumber.api.CucumberOptions;
|
||||||
|
import cucumber.api.junit.Cucumber;
|
||||||
|
|
||||||
|
@RunWith(Cucumber.class)
|
||||||
|
@CucumberOptions(
|
||||||
|
features="MAF/Feature/ERF.feature",
|
||||||
|
glue={"com.machint.automation.StepDefinition"},
|
||||||
|
monochrome = true,
|
||||||
|
plugin = {"com.cucumber.listener.ExtentCucumberFormatter:target/AautomationExtent-Insurence-reports/report.html"},
|
||||||
|
tags= {"@Insurance"}
|
||||||
|
)
|
||||||
|
public class Insurance_Runner
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
package com.machint.automation.Runner;
|
||||||
|
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
|
import cucumber.api.CucumberOptions;
|
||||||
|
import cucumber.api.junit.Cucumber;
|
||||||
|
|
||||||
|
@RunWith(Cucumber.class)
|
||||||
|
@CucumberOptions(
|
||||||
|
features="MAF/Feature/ERF.feature",
|
||||||
|
glue={"com.machint.automation.StepDefinition"},
|
||||||
|
monochrome = true,
|
||||||
|
plugin = {"com.cucumber.listener.ExtentCucumberFormatter:target/AautomationExtent-RegistrationForm-reports/report.html"},
|
||||||
|
tags= {"@registration"}
|
||||||
|
)
|
||||||
|
public class RegistrationFrom_Runner {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,155 @@
|
||||||
|
package com.machint.automation.StepDefinition;
|
||||||
|
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import com.machint.automation.AutomationController;
|
||||||
|
import com.machint.automation.PageObject.ERF_PageObject;
|
||||||
|
import com.machint.automation.model.FormObject;
|
||||||
|
|
||||||
|
import cucumber.api.java.en.And;
|
||||||
|
import cucumber.api.java.en.Given;
|
||||||
|
import cucumber.api.java.en.When;
|
||||||
|
|
||||||
|
public class ERFSteps extends ERF_PageObject
|
||||||
|
{
|
||||||
|
@Test
|
||||||
|
@Given("^User navigate to Pega Portal$")
|
||||||
|
public void user_navigate_to_Pega_Portal() throws Throwable
|
||||||
|
{
|
||||||
|
FormObject formData = AutomationController.formObject;
|
||||||
|
launchBrowser(formData.getBrowser(),formData.getEnvironment());
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@When("^User enter project manager username and password$")
|
||||||
|
public void user_enter_project_manager_username_and_password() throws Throwable
|
||||||
|
{ readExcel("Pega");
|
||||||
|
String username = Machint_TestDataFromExcel("Username");
|
||||||
|
Machint_EnterTextField("name", Username , username , "visibilityOf");
|
||||||
|
|
||||||
|
String password = Machint_TestDataFromExcel("Password");
|
||||||
|
Machint_EnterTextField("name", Password, password, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^Click on login button$")
|
||||||
|
public void click_on_login_button() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Login, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^User verify the project manager home page title$")
|
||||||
|
public void user_verify_the_project_manager_home_page_title() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_getTitle("DManager");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^Click on Employee Requisition Form ERF$")
|
||||||
|
public void click_on_Employee_Requisition_Form_ERF() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", ERF, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^User entered ERF code details$")
|
||||||
|
public void user_entered_ERF_code_details() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Frame_webElement("xpath", IFrame, "visibilityOf");
|
||||||
|
|
||||||
|
String position = Machint_TestDataFromExcel("Username");
|
||||||
|
Machint_EnterTextField("xpath", Position, position, "visibilityOf");
|
||||||
|
|
||||||
|
String no_of_positions = Machint_TestDataFromExcel("No of Positions");
|
||||||
|
Machint_EnterTextField("id", No_of_Positions , no_of_positions, "visibilityOf");
|
||||||
|
|
||||||
|
String client_project = Machint_TestDataFromExcel("Client/ Project");
|
||||||
|
Machint_EnterTextField("id", Client_Project , client_project, "visibilityOf");
|
||||||
|
|
||||||
|
String projectID = Machint_TestDataFromExcel("Project ID");
|
||||||
|
Machint_EnterTextField("id", Project_ID , projectID, "visibilityOf");
|
||||||
|
|
||||||
|
String department = Machint_TestDataFromExcel("Department");
|
||||||
|
Machint_EnterTextField("id", Department , department, "visibilityOf");
|
||||||
|
|
||||||
|
String location = Machint_TestDataFromExcel("Location");
|
||||||
|
Machint_EnterTextField("id", Location , location, "visibilityOf");
|
||||||
|
|
||||||
|
String external_hiring = Machint_TestDataFromExcel("External Hiring");
|
||||||
|
Machint_selectValue("id", External_Hiring , external_hiring, "visibilityOf");
|
||||||
|
|
||||||
|
String reason_for_request = Machint_TestDataFromExcel("Reason for Request");
|
||||||
|
Machint_EnterTextField("id", Reason_for_Request , reason_for_request, "visibilityOf");
|
||||||
|
|
||||||
|
String salary_range = Machint_TestDataFromExcel("Salary Range");
|
||||||
|
Machint_selectValue("id", Salary_Range , salary_range, "visibilityOf");
|
||||||
|
|
||||||
|
String reporting = Machint_TestDataFromExcel("Reporting");
|
||||||
|
Machint_EnterTextField("id", Reporting , reporting, "visibilityOf");
|
||||||
|
|
||||||
|
String target_date_to_fill = Machint_TestDataFromExcel("Target Date to Fill");
|
||||||
|
Machint_EnterTextField("className", Target_Date_to_Fill , target_date_to_fill, "visibilityOf");
|
||||||
|
|
||||||
|
Machint_Click("xpath", Laptop, "visibilityOf");
|
||||||
|
Machint_Click("xpath", Bag, "visibilityOf");
|
||||||
|
Machint_Click("xpath", HRIS, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^User entered the Job Specifications details$")
|
||||||
|
public void user_entered_the_Job_Specifications_details() throws Throwable
|
||||||
|
{
|
||||||
|
String job_responsibilities = Machint_TestDataFromExcel("Job Responsibilities");
|
||||||
|
Machint_EnterTextField("id", Job_Responsibilities, job_responsibilities, "visibilityOf");
|
||||||
|
|
||||||
|
String special_accountabilities = Machint_TestDataFromExcel("Special Accountabilities or Typical Goals");
|
||||||
|
Machint_EnterTextField("name", Special_Accountabilities, special_accountabilities, "visibilityOf");
|
||||||
|
|
||||||
|
String additional_inputs_to_roles = Machint_TestDataFromExcel("Additional Inputs to Roles");
|
||||||
|
Machint_EnterTextField("id", Additional_Inputs_to_Roles, additional_inputs_to_roles, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^User entered the Competencies Required details$")
|
||||||
|
public void user_entered_the_Competencies_Required_details() throws Throwable
|
||||||
|
{
|
||||||
|
String practice = Machint_TestDataFromExcel("Practice");
|
||||||
|
Machint_selectVisibleText("id", Practice, practice, "visibilityOf");
|
||||||
|
|
||||||
|
String domain = Machint_TestDataFromExcel("Domain");
|
||||||
|
Machint_selectVisibleText("name", Domain, domain, "visibilityOf");
|
||||||
|
|
||||||
|
String is_certification_required = Machint_TestDataFromExcel("Is Certification Required");
|
||||||
|
Machint_selectVisibleText("id", Is_Certification_Required, is_certification_required, "visibilityOf");
|
||||||
|
|
||||||
|
String certifications = Machint_TestDataFromExcel("Certifications");
|
||||||
|
Machint_selectVisibleText("id", Certifications, certifications, "visibilityOf");
|
||||||
|
|
||||||
|
String technical_competency = Machint_TestDataFromExcel("Technical Competency");
|
||||||
|
Machint_EnterTextField("xpath", Technical_Competency, technical_competency, "visibilityOf");
|
||||||
|
|
||||||
|
String behavioural_competency = Machint_TestDataFromExcel("Behavioural Competency");
|
||||||
|
Machint_selectVisibleText("xpath", Behavioural_Competency, behavioural_competency, "visibilityOf");
|
||||||
|
|
||||||
|
String qualification = Machint_TestDataFromExcel("Qualification");
|
||||||
|
Machint_selectVisibleText("xpath", Qualification, qualification, "visibilityOf");
|
||||||
|
|
||||||
|
String overall_experience_in_years = Machint_TestDataFromExcel("Overall Experience In Years");
|
||||||
|
Machint_selectVisibleText("xpath", Overall_Experience_In_Years, overall_experience_in_years, "visibilityOf");
|
||||||
|
|
||||||
|
String relevant_experience_in_years = Machint_TestDataFromExcel("Overall Experience In Years");
|
||||||
|
Machint_selectVisibleText("xpath", Relevant_Experience_In_Years, relevant_experience_in_years, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^User clicks on project manager submit button$")
|
||||||
|
public void user_clicks_on_project_manager_submit_button() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Submit, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^Project manager page display the message$")
|
||||||
|
public void project_manager_page_display_the_message() throws Throwable
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^In project manager page click on logoff$")
|
||||||
|
public void in_project_manager_page_click_on_logoff() throws Throwable
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,216 @@
|
||||||
|
package com.machint.automation.StepDefinition;
|
||||||
|
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import com.machint.automation.AutomationController;
|
||||||
|
import com.machint.automation.PageObject.HR_login_PageObject;
|
||||||
|
import com.machint.automation.model.FormObject;
|
||||||
|
|
||||||
|
import cucumber.api.java.en.And;
|
||||||
|
import cucumber.api.java.en.Given;
|
||||||
|
import cucumber.api.java.en.Then;
|
||||||
|
import cucumber.api.java.en.When;
|
||||||
|
|
||||||
|
public class HR_LoginSteps extends HR_login_PageObject
|
||||||
|
{
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Given("^user navigate to Machint Walk-In Drive Portal$")
|
||||||
|
public void user_navigate_to_Machint_Walk_In_Drive_Portal() throws Throwable
|
||||||
|
{
|
||||||
|
FormObject formData = AutomationController.formObject;
|
||||||
|
launchBrowser(formData.getBrowser(),formData.getEnvironment());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@When("^user verify the homepage title$")
|
||||||
|
public void user_verify_the_homepage_title() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_getTitle("Mach");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@Then("^user entered the username and password in walk-in portal$")
|
||||||
|
public void user_entered_the_username_and_password_in_walkin_portal() throws Exception
|
||||||
|
{
|
||||||
|
readExcel("HR_Login");
|
||||||
|
|
||||||
|
String username = Machint_TestDataFromExcel("Username");
|
||||||
|
Machint_EnterTextField("id", Employee_Email , username,"visibilityOf");
|
||||||
|
|
||||||
|
String password = Machint_TestDataFromExcel("Password");
|
||||||
|
Machint_EnterTextField("id", Password, password, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^user click on login button$")
|
||||||
|
public void user_click_on_login_button() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Login, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@Then("^login successfully after display the search from$")
|
||||||
|
public void login_successfully_after_display_the_search_from() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_getTitle("Machint");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^user click on Profiles$")
|
||||||
|
public void user_click_on_Profiles() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Profiles, "visibilityOf");
|
||||||
|
Machint_getTitle("Machint");
|
||||||
|
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^user select from and to dates$")
|
||||||
|
public void user_select_from_and_to_dates() throws Throwable
|
||||||
|
{
|
||||||
|
String from = Machint_TestDataFromExcel("From");
|
||||||
|
Machint_EnterTextField("xpath", From, from, "visibilityOf");
|
||||||
|
|
||||||
|
String to = Machint_TestDataFromExcel("To");
|
||||||
|
Machint_EnterTextField("xpath", To, to, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^user click on submit button$")
|
||||||
|
public void user_click_on_submit_button() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Submit, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@Then("^display the particular from and to date data$")
|
||||||
|
public void display_the_particular_from_and_to_date_data() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_getTitle("Machint");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And ("^search the profile id$")
|
||||||
|
public void search_the_profile_id() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_EnterTextField("xpath", Search, "P0021", "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^check the that particular profile id$")
|
||||||
|
public void check_the_that_particular_profile_id() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("css", Check, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^click on shortlist button$")
|
||||||
|
public void click_on_shortlist_button() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Shortlist, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@Then("^display the alert message$")
|
||||||
|
public void display_the_alert_message() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_acceptAlert();
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^user click on search icon$")
|
||||||
|
public void user_click_on_search_icon() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_mouseHover(Search_Icon);
|
||||||
|
Machint_Click("xpath", Search_Icon,"visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^user verify search page url$")
|
||||||
|
public void user_verify_search_page_url() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_getTitle("Mach");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^user entered the Search Form details$")
|
||||||
|
public void user_entered_the_Search_Form_details() throws Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
String HiringPlan = Machint_TestDataFromExcel("HiringPlan");
|
||||||
|
Machint_selectValue("xpath", Hiring_Plan, HiringPlan, "visibilityOf");
|
||||||
|
|
||||||
|
String CandidateShortlisted= Machint_TestDataFromExcel("Candidate Shortlisted");
|
||||||
|
Machint_selectValue("xpath", Candidate_Shortlisted, CandidateShortlisted,"visibilityOf");
|
||||||
|
|
||||||
|
String HighestQualification = Machint_TestDataFromExcel("Highest Qualification");
|
||||||
|
Machint_EnterTextField("id", Highest_Qualification, HighestQualification, "visibilityOf");
|
||||||
|
|
||||||
|
String specialization = Machint_TestDataFromExcel("Specialization");
|
||||||
|
Machint_EnterTextField("id", Specialization, specialization, "visibilityOf");
|
||||||
|
|
||||||
|
String percentage = Machint_TestDataFromExcel("Percentage");
|
||||||
|
Machint_EnterTextField("id", Percentage, percentage, "visibilityOf");
|
||||||
|
|
||||||
|
String YearOfPassing = Machint_TestDataFromExcel("Year Of Passing");
|
||||||
|
Machint_EnterTextField("name", Year_Of_Passing, YearOfPassing, "visibilityOf");
|
||||||
|
|
||||||
|
String KnowledgeInJAVA = Machint_TestDataFromExcel("Knowledge In JAVA");
|
||||||
|
Machint_selectValue("id", Knowledge_In_JAVA, KnowledgeInJAVA, "visibilityOf");
|
||||||
|
|
||||||
|
String KnowledgeInPEGA = Machint_TestDataFromExcel("Knowledge In PEGA");
|
||||||
|
Machint_selectValue("id", Knowledge_In_PEGA, KnowledgeInPEGA, "visibilityOf");
|
||||||
|
|
||||||
|
String KnowledgeInAPPIAN = Machint_TestDataFromExcel("Knowledge In APPIAN");
|
||||||
|
Machint_selectValue("xpath", Knowledge_In_APPIAN, KnowledgeInAPPIAN, "visibilityOf");
|
||||||
|
|
||||||
|
String KnowledgeInRPA = Machint_TestDataFromExcel("Knowledge In RPA");
|
||||||
|
Machint_selectVisibleText("id", Knowledge_In_RPA, KnowledgeInRPA, "visibilityOf");
|
||||||
|
|
||||||
|
String KnowledgeInPYTHON = Machint_TestDataFromExcel("Knowledge In PYTHON");
|
||||||
|
Machint_selectVisibleText("id", Knowledge_In_PYTHON, KnowledgeInPYTHON, "visibilityOf");
|
||||||
|
|
||||||
|
String KnowledgeInDATABASE = Machint_TestDataFromExcel("Knowledge In DATABASE");
|
||||||
|
Machint_selectVisibleText("xpath", Knowledge_In_DATABASE, KnowledgeInDATABASE, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^user click on search button$")
|
||||||
|
public void user_click_on_search_button() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Search_btn, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And ("^search the profile id in search from$")
|
||||||
|
public void search_the_profile_id_in_search_from() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_EnterTextField("xpath", Search, "P0210", "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^check the that particular profile id in search from$")
|
||||||
|
public void check_the_that_particular_profile_id_in_search_from() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Check_SearchFrom, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^user click on Shortlist$")
|
||||||
|
public void user_click_on_Shortlist() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Shortlist, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@Then("^display the alert messgae in search form$")
|
||||||
|
public void display_the_alert_message_in_search_form() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_acceptAlert();
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^user click on download selected$")
|
||||||
|
public void user_click_on_download_selected() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Search_btn, "visibilityOf");
|
||||||
|
Machint_EnterTextField("xpath", Search, "P0210", "visibilityOf");
|
||||||
|
Machint_Click("xpath", Check_SearchFrom, "visibilityOf");
|
||||||
|
// Machint_Click("xpath", DownloadSelected, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^user click on send mail")
|
||||||
|
public void user_click_on_send_mail() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Send_Mail, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^user click on logout icon")
|
||||||
|
public void user_click_on_logout_icon() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Logout, "visibilityOf");
|
||||||
|
driver.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,190 @@
|
||||||
|
package com.machint.automation.StepDefinition;
|
||||||
|
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import com.machint.automation.AutomationController;
|
||||||
|
import com.machint.automation.PageObject.Insurance_PageObject;
|
||||||
|
import com.machint.automation.model.FormObject;
|
||||||
|
|
||||||
|
import cucumber.api.java.en.And;
|
||||||
|
import cucumber.api.java.en.Given;
|
||||||
|
import cucumber.api.java.en.Then;
|
||||||
|
import cucumber.api.java.en.When;
|
||||||
|
|
||||||
|
public class InsuranceSteps extends Insurance_PageObject
|
||||||
|
{
|
||||||
|
@Test
|
||||||
|
@Given("^user navigate to parthenon page$")
|
||||||
|
public void user_navigate_to_parthenon_page() throws Throwable
|
||||||
|
{
|
||||||
|
FormObject formData = AutomationController.formObject;
|
||||||
|
launchBrowser(formData.getBrowser(),formData.getEnvironment());
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@When("^user validates homepage title$")
|
||||||
|
public void user_validates_homepage_title() throws InterruptedException
|
||||||
|
{
|
||||||
|
Machint_FutureDate();
|
||||||
|
Machint_getTitle("Appian for Rainbow Digital Marketing & Analytics Pte Ltd (DEV)");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@Then("^user entered the username and password$")
|
||||||
|
public void user_entered_the_username_and_password() throws Throwable
|
||||||
|
{
|
||||||
|
readExcel("Insurance");
|
||||||
|
|
||||||
|
String username = Machint_TestDataFromExcel("Username");
|
||||||
|
Machint_EnterTextField("id", Username, username, "visibilityOf");
|
||||||
|
|
||||||
|
String password = Machint_TestDataFromExcel("Password");
|
||||||
|
Machint_EnterTextField("id", Password, password, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^user click on signin button$")
|
||||||
|
public void user_click_on_signin_button() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Signin, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@Then("^parthenon page should be displayed$")
|
||||||
|
public void parthenon_page_should_be_displayed() throws InterruptedException
|
||||||
|
{
|
||||||
|
Machint_getTitle("HOME - Parthenon");
|
||||||
|
}
|
||||||
|
|
||||||
|
//Actions
|
||||||
|
@Test
|
||||||
|
@Given("^user click on actions$")
|
||||||
|
public void user_click_on_actions() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Actions, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@When("^user validates action page$")
|
||||||
|
public void user_validates_action_page() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_getTitle("//Actions - Parthenon");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^user click on Case management$")
|
||||||
|
public void user_click_on_Case_management() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Case_management, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^user create case in case management$")
|
||||||
|
public void user_create_case_in_case_management() throws Throwable
|
||||||
|
{
|
||||||
|
String LineOfBusiness = Machint_TestDataFromExcel("Line of business");
|
||||||
|
Machint_EnterTextKey("xpath", Line_of_business, LineOfBusiness, "visibilityOf");
|
||||||
|
|
||||||
|
String ProductCategory = Machint_TestDataFromExcel("Product category");
|
||||||
|
Machint_EnterTextKey("xpath", Product_category, ProductCategory, "visibilityOf");
|
||||||
|
|
||||||
|
String product = Machint_TestDataFromExcel("Product");
|
||||||
|
Machint_EnterTextKey("xpath", Product , product, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And ("^after select the product catalogue in SH - Advanced table click on select button$")
|
||||||
|
public void after_select_the_product_catalogue_in_SH_Advanced_table_click_on_select_button() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Select, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^click on continue button$")
|
||||||
|
public void click_on_continue_button() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Continue, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^click on add customer button$")
|
||||||
|
public void click_on_add_customer_button() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Add_customer, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@Then("^in SH-Advanced Personal Details page displayed$")
|
||||||
|
public void in_SH_Advanced_Personal_Details_page_displayed() throws InterruptedException
|
||||||
|
{
|
||||||
|
Machint_getTitle("PA Customer On-Boarding - Parthenon//");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^user enter personal details$")
|
||||||
|
public void user_enter_personal_details() throws Throwable
|
||||||
|
{
|
||||||
|
String title = Machint_TestDataFromExcel("Title");
|
||||||
|
Machint_EnterTextKey("xpath", Title , title, "visibilityOf");
|
||||||
|
|
||||||
|
String first_name = Machint_TestDataFromExcel("First Name");
|
||||||
|
Machint_EnterTextField("xpath", First_name , first_name, "visibilityOf");
|
||||||
|
|
||||||
|
String middle_name = Machint_TestDataFromExcel("Middle Name");
|
||||||
|
Machint_EnterTextField("xpath", Middle_name , middle_name, "visibilityOf");
|
||||||
|
|
||||||
|
String last_name = Machint_TestDataFromExcel("Last Name");
|
||||||
|
Machint_EnterTextField("xpath", Last_name , last_name, "visibilityOf");
|
||||||
|
|
||||||
|
String customer_type = Machint_TestDataFromExcel("Customer Type");
|
||||||
|
Machint_EnterTextKey("xpath", Customer_type , customer_type, "visibilityOf");
|
||||||
|
|
||||||
|
String mobile_number = Machint_TestDataFromExcel("Mobile Number");
|
||||||
|
Machint_EnterTextField("xpath", Mobile_number , mobile_number, "visibilityOf");
|
||||||
|
|
||||||
|
String email = Machint_TestDataFromExcel("Email");
|
||||||
|
Machint_EnterTextField("xpath", Email , email, "visibilityOf");
|
||||||
|
|
||||||
|
String date_of_birth = Machint_TestDataFromExcel("Date Of Birth");
|
||||||
|
Machint_EnterTextField("xpath", Date_of_birth , date_of_birth, "visibilityOf");
|
||||||
|
|
||||||
|
Machint_Click("xpath", Gender, "visibilityOf");
|
||||||
|
|
||||||
|
Machint_Click("xpath", Un_married, "visibilityOf");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@And("^click on add new row in family details$")
|
||||||
|
public void click_on_add_new_row_in_family_details() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Add_new_row, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^user enter family details$")
|
||||||
|
public void user_enter_family_details() throws Throwable
|
||||||
|
{
|
||||||
|
String title = Machint_TestDataFromExcel("Family Details Title");
|
||||||
|
Machint_EnterTextKey("xpath", FamilyDetails_title, title, "visibilityOf");
|
||||||
|
|
||||||
|
String relation_type = Machint_TestDataFromExcel("Family Details Relation Type");
|
||||||
|
Machint_EnterTextKey("xpath", FamilyDetails_Relation_Type, relation_type, "visibilityOf");
|
||||||
|
|
||||||
|
String first_name = Machint_TestDataFromExcel("Family Details First Name");
|
||||||
|
Machint_EnterTextField("xpath", FamilyDetails_first_name, first_name, "visibilityOf");
|
||||||
|
|
||||||
|
String last_name = Machint_TestDataFromExcel("Family Details Last Name");
|
||||||
|
Machint_EnterTextField("xpath", FamilyDetails_last_name, last_name, "visibilityOf");
|
||||||
|
|
||||||
|
String middle_name = Machint_TestDataFromExcel("Family Details Middle Name");
|
||||||
|
Machint_EnterTextField("xpath", FamilyDetails_middle_name, middle_name, "visibilityOf");
|
||||||
|
|
||||||
|
String gender = Machint_TestDataFromExcel("Family Details Gender");
|
||||||
|
Machint_EnterTextKey("xpath", FamilyDetails_gender, gender, "visibilityOf");
|
||||||
|
|
||||||
|
String date_of_birth = Machint_TestDataFromExcel("Family Details Date Of Birth");
|
||||||
|
Machint_EnterTextField("xpath", FamilyDeatils_date_of_birth, date_of_birth, "visibilityOf");
|
||||||
|
|
||||||
|
String mobile_number = Machint_TestDataFromExcel("Family Details Mobile Number");
|
||||||
|
Machint_EnterTextField("xpath", FamilyDetails_mobile_number, mobile_number, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^click on next button$")
|
||||||
|
public void click_on_next_button() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", Next, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@Then("^KYC documents page displayed$")
|
||||||
|
public void KYC_documents_page_displayed() throws Throwable
|
||||||
|
{
|
||||||
|
driver.close();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,151 @@
|
||||||
|
package com.machint.automation.StepDefinition;
|
||||||
|
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import com.machint.automation.AutomationController;
|
||||||
|
import com.machint.automation.PageObject.RegistrationFrom_PageObject;
|
||||||
|
import com.machint.automation.model.FormObject;
|
||||||
|
|
||||||
|
import cucumber.api.java.en.And;
|
||||||
|
import cucumber.api.java.en.Given;
|
||||||
|
import cucumber.api.java.en.Then;
|
||||||
|
import cucumber.api.java.en.When;
|
||||||
|
|
||||||
|
public class RegistrationSteps extends RegistrationFrom_PageObject
|
||||||
|
{
|
||||||
|
@Test
|
||||||
|
@Given("^user navigate to registration form$")
|
||||||
|
public void user_navigate_to_registration_form() throws Throwable
|
||||||
|
{
|
||||||
|
FormObject formData = AutomationController.formObject;
|
||||||
|
launchBrowser(formData.getBrowser(),formData.getEnvironment());
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@When("^user validates the homepage$")
|
||||||
|
public void user_validates_the_homepage() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_getTitle("hint");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@Then("^user entered the Personal Information details$")
|
||||||
|
public void user_entered_the_Personal_Information_details() throws Throwable
|
||||||
|
{
|
||||||
|
readExcel("RegistrationForm");
|
||||||
|
|
||||||
|
String firstname = Machint_TestDataFromExcel("FirstName");
|
||||||
|
Machint_EnterTextField("xpath", First_Name, firstname, "visibilityOf");
|
||||||
|
|
||||||
|
String lastname = Machint_TestDataFromExcel("LastName");
|
||||||
|
Machint_EnterTextField("id", Last_Name, lastname, "visibilityOf");
|
||||||
|
|
||||||
|
String contactno = Machint_TestDataFromExcel("ContactNumber");
|
||||||
|
Machint_EnterTextField("id",Contact_Number, contactno, "visibilityOf");
|
||||||
|
|
||||||
|
String alternatecontactno = Machint_TestDataFromExcel("AlternateContactNumber");
|
||||||
|
Machint_EnterTextField("id",Alternate_Contact_Number, alternatecontactno, "visibilityOf");
|
||||||
|
|
||||||
|
String email = Machint_TestDataFromExcel("Email");
|
||||||
|
Machint_EnterTextField("id",Email, email, "visibilityOf");
|
||||||
|
|
||||||
|
String city = Machint_TestDataFromExcel("City");
|
||||||
|
Machint_EnterTextField("id",City, city, "visibilityOf");
|
||||||
|
|
||||||
|
String location = Machint_TestDataFromExcel("CurrentLocation");
|
||||||
|
Machint_EnterTextField("id",Location, location, "visibilityOf");
|
||||||
|
|
||||||
|
String permanentlocation = Machint_TestDataFromExcel("PermanentLocation");
|
||||||
|
Machint_EnterTextField("id",Permanent_Location, permanentlocation, "visibilityOf");
|
||||||
|
|
||||||
|
String address = Machint_TestDataFromExcel("Address");
|
||||||
|
Machint_EnterTextField("xpath",Address, address, "visibilityOf");
|
||||||
|
|
||||||
|
Machint_mouseHover(Education_Information);
|
||||||
|
|
||||||
|
Machint_AssertEquals("xpath", "//div/h4[text()='Personal Information']", "Personal Information:");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@And("^user navigate to Education Information and entered the Education Information details$")
|
||||||
|
public void user_navigate_to_Education_Information_and_entered_the_Education_Information_details() throws Throwable
|
||||||
|
{
|
||||||
|
String highestqualification = Machint_TestDataFromExcel("HighestQualification");
|
||||||
|
Machint_selectVisibleText("xpath",Highest_Qualification, highestqualification, "visibilityOf");
|
||||||
|
|
||||||
|
String specialization = Machint_TestDataFromExcel("Specialization");
|
||||||
|
Machint_selectVisibleText("id",Specialization, specialization, "visibilityOf");
|
||||||
|
|
||||||
|
String percentage = Machint_TestDataFromExcel("Percentage");
|
||||||
|
Machint_EnterTextField("id",Percentage, percentage, "visibilityOf");
|
||||||
|
|
||||||
|
String yearofpassing = Machint_TestDataFromExcel("YearOfPassing");
|
||||||
|
Machint_EnterTextField("name",Year_Of_Passing, yearofpassing, "visibilityOf");
|
||||||
|
|
||||||
|
Machint_mouseHover(Technical_Knowledge);
|
||||||
|
|
||||||
|
Machint_AssertEquals("xpath", "//div/h4[text()='Education Information']", "Education Information");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@And("^user navigate to Technical Knowledge and entered the Technical Knowledge details$")
|
||||||
|
public void user_navigate_to_Technical_Knowledge_and_entered_the_Technical_Knowledge_details() throws Throwable
|
||||||
|
{
|
||||||
|
String Java = Machint_TestDataFromExcel("Knowledge In JAVA");
|
||||||
|
Machint_selectValue("xpath",Knowledge_In_JAVA, Java, "visibilityOf");
|
||||||
|
|
||||||
|
String Pega = Machint_TestDataFromExcel("Knowledge In PEGA");
|
||||||
|
Machint_selectValue("xpath",Knowledge_In_PEGA, Pega, "visibilityOf");
|
||||||
|
|
||||||
|
String Appian = Machint_TestDataFromExcel("Knowledge In APPIAN");
|
||||||
|
Machint_selectValue("xpath",Knowledge_In_APPIAN, Appian, "visibilityOf");
|
||||||
|
|
||||||
|
String RPA = Machint_TestDataFromExcel("Knowledge In RPA");
|
||||||
|
Machint_selectValue("xpath",Knowledge_In_RPA, RPA, "visibilityOf");
|
||||||
|
|
||||||
|
String Python = Machint_TestDataFromExcel("Knowledge In PYTHON");
|
||||||
|
Machint_selectValue("xpath",Knowledge_In_PYTHON, Python, "visibilityOf");
|
||||||
|
|
||||||
|
String Database= Machint_TestDataFromExcel("Knowledge In DATABASE");
|
||||||
|
Machint_selectValue("xpath",Knowledge_In_DATABASE, Database, "visibilityOf");
|
||||||
|
|
||||||
|
Machint_mouseHover(Other_Info);
|
||||||
|
|
||||||
|
Machint_AssertEquals("xpath", "//div/h4[text()='Technical Knowledge']", "Technical Knowledge");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Then("^user navigate the Other Info and entered the Other Info details$")
|
||||||
|
public void user_navigate_the_Other_Info_and_entered_the_Other_Info_details() throws Exception
|
||||||
|
{
|
||||||
|
String source = Machint_TestDataFromExcel("Source");
|
||||||
|
Machint_selectValue("name",Source, source, "visibilityOf");
|
||||||
|
|
||||||
|
// String employee_referral = Machint_TestDataFromExcel("Employee referral");
|
||||||
|
// Machint_selectValue("xpath",registration.Employee_referral, employee_referral, "visibilityOf");
|
||||||
|
|
||||||
|
String message = Machint_TestDataFromExcel("Message");
|
||||||
|
Machint_EnterTextField("name",Message, message, "visibilityOf");
|
||||||
|
|
||||||
|
String position = Machint_TestDataFromExcel("Have you applied for any position in our organization in past 6 months");
|
||||||
|
Machint_selectValue("id",Position, position, "visibilityOf");
|
||||||
|
|
||||||
|
Machint_AssertEquals("xpath", "//div/h4[text()='Other Info']", "Other Info:");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^user click on choose file and upload the resume$")
|
||||||
|
public void user_click_on_choose_file_and_upload_the_resume() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_EnterTextField("xpath",Resume, "C:\\Users\\durga\\Desktop\\Automation\\Automation Strategy.docx", "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@And("^click on Submit button$")
|
||||||
|
public void click_on_Submit_button() throws Throwable
|
||||||
|
{
|
||||||
|
Machint_Click("xpath", submit, "visibilityOf");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
@Then("^your registration process completed$")
|
||||||
|
public void your_registration_process_completed() throws Throwable
|
||||||
|
{
|
||||||
|
driver.close();
|
||||||
|
}
|
||||||
|
}
|
727
src/main/java/com/machint/automation/Utils/ActionClass.java
Normal file
727
src/main/java/com/machint/automation/Utils/ActionClass.java
Normal file
|
@ -0,0 +1,727 @@
|
||||||
|
package com.machint.automation.Utils;
|
||||||
|
|
||||||
|
import java.text.DateFormat;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.openqa.selenium.Alert;
|
||||||
|
import org.openqa.selenium.By;
|
||||||
|
import org.openqa.selenium.JavascriptExecutor;
|
||||||
|
import org.openqa.selenium.Keys;
|
||||||
|
import org.openqa.selenium.NoAlertPresentException;
|
||||||
|
import org.openqa.selenium.NoSuchElementException;
|
||||||
|
import org.openqa.selenium.NoSuchFrameException;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
import org.openqa.selenium.interactions.Actions;
|
||||||
|
import org.openqa.selenium.support.ui.ExpectedConditions;
|
||||||
|
import org.openqa.selenium.support.ui.Select;
|
||||||
|
import org.openqa.selenium.support.ui.WebDriverWait;
|
||||||
|
import org.testng.Assert;
|
||||||
|
|
||||||
|
import com.machint.automation.base.BaseClass;
|
||||||
|
|
||||||
|
public class ActionClass extends BaseClass
|
||||||
|
{
|
||||||
|
public static WebElement element;
|
||||||
|
public static By by, locator;
|
||||||
|
public static Select select;
|
||||||
|
public static WebDriverWait wait;
|
||||||
|
public static Actions action;
|
||||||
|
public static String actual, actualValue;
|
||||||
|
public static Boolean flag;
|
||||||
|
public static Alert alert ;
|
||||||
|
|
||||||
|
public static By Machint_locator(String locatorType, String LocatorValue)
|
||||||
|
{
|
||||||
|
switch (locatorType)
|
||||||
|
{
|
||||||
|
case "id":
|
||||||
|
by = By.id(LocatorValue);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "name":
|
||||||
|
by = By.name(LocatorValue);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "className":
|
||||||
|
by = By.className(LocatorValue);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "tagName":
|
||||||
|
by = By.tagName(LocatorValue);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "xpath":
|
||||||
|
by = By.xpath(LocatorValue);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "css":
|
||||||
|
by = By.cssSelector(LocatorValue);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "linkText":
|
||||||
|
by = By.linkText(LocatorValue);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "partialLinkText":
|
||||||
|
by = By.partialLinkText(LocatorValue);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
by = null;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return by;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_EnterTextKey(String LocatorType, String LocatorValue, String value, String WaitType) throws Exception
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
locator = Machint_locator(LocatorType, LocatorValue);
|
||||||
|
element = driver.findElement(locator);
|
||||||
|
|
||||||
|
Machint_Waits(WaitType);
|
||||||
|
element.click();
|
||||||
|
element.sendKeys(value);
|
||||||
|
element.sendKeys(Keys.ENTER);
|
||||||
|
Machint_JSHighlight(element);
|
||||||
|
Thread.sleep(2000);
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
System.err.format("No Element Found to Machint_EnterTextKey \t" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_EnterTextField(String LocatorType, String LocatorValue, String value, String WaitType) throws Exception
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
locator = Machint_locator(LocatorType, LocatorValue);
|
||||||
|
element = driver.findElement(locator);
|
||||||
|
Machint_JSHighlight(element);
|
||||||
|
Machint_Waits(WaitType);
|
||||||
|
element.clear();
|
||||||
|
element.sendKeys(value);
|
||||||
|
Thread.sleep(2000);
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
System.err.format("No Element Found to Machint_EnterTextField \t" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_Click(String LocatorType, String LocatorValue, String WaitType) throws Exception
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
locator = Machint_locator(LocatorType, LocatorValue);
|
||||||
|
element = driver.findElement(locator);
|
||||||
|
Machint_JSHighlight(element);
|
||||||
|
Machint_Waits(WaitType);
|
||||||
|
element.click();
|
||||||
|
Thread.sleep(3000);
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
System.err.format("No Element Found to perform Machint_Click \t" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_contextClick(String LocatorType, String LocatorValue, String WaitType) throws Exception
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
locator = Machint_locator(LocatorType, LocatorValue);
|
||||||
|
element = driver.findElement(locator);
|
||||||
|
Machint_JSHighlight(element);
|
||||||
|
Machint_Waits(WaitType);
|
||||||
|
action=new Actions(driver);
|
||||||
|
action.contextClick(element).build().perform();
|
||||||
|
Thread.sleep(1000);
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
System.err.format("No Element Found to perform Machint_DoubleClick \t" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_doubleClick(String LocatorType, String LocatorValue, String WaitType) throws Exception
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
locator = Machint_locator(LocatorType, LocatorValue);
|
||||||
|
element = driver.findElement(locator);
|
||||||
|
Machint_JSHighlight(element);
|
||||||
|
Machint_Waits(WaitType);
|
||||||
|
action=new Actions(driver);
|
||||||
|
action.moveToElement(element).doubleClick().build().perform();
|
||||||
|
Thread.sleep(1000);
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
System.err.format("No Element Found to perform Machint_DoubleClick \t" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_clickAndHold(String LocatorType, String LocatorValue, String WaitType) throws Exception
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
action = new Actions(driver);
|
||||||
|
locator = Machint_locator(LocatorType, LocatorValue);
|
||||||
|
element = driver.findElement(locator);
|
||||||
|
action.clickAndHold(element).build().perform();
|
||||||
|
Machint_JSHighlight(element);
|
||||||
|
Machint_Waits(WaitType);
|
||||||
|
element.click();
|
||||||
|
Thread.sleep(3000);
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
System.err.format("No Element Found to perform Machint_ClickAndHoldAction\t" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_selectValue(String LocatorType, String LocatorValue, String text, String WaitType) throws Exception
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
locator = Machint_locator(LocatorType, LocatorValue);
|
||||||
|
element = driver.findElement(locator);
|
||||||
|
Machint_JSHighlight(element);
|
||||||
|
Machint_Waits(WaitType);
|
||||||
|
select = new Select(element);
|
||||||
|
select.selectByValue(text);
|
||||||
|
Thread.sleep(1000);
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
System.err.format("No Element Found to Machint_selectValue \t" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_selectIndex(String LocatorType, String LocatorValue, int value, String WaitType) throws Exception
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
locator = Machint_locator(LocatorType, LocatorValue);
|
||||||
|
element = driver.findElement(locator);
|
||||||
|
Machint_JSHighlight(element);
|
||||||
|
Machint_Waits(WaitType);
|
||||||
|
select = new Select(element);
|
||||||
|
select.selectByIndex(value);
|
||||||
|
Thread.sleep(1000);
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
System.err.format("No Element Found to Machint_selectIndex \t" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_selectVisibleText(String LocatorType, String LocatorValue, String text, String WaitType) throws Exception
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
locator = Machint_locator(LocatorType, LocatorValue);
|
||||||
|
element = driver.findElement(locator);
|
||||||
|
Machint_JSHighlight(element);
|
||||||
|
Machint_Waits(WaitType);
|
||||||
|
select = new Select(element);
|
||||||
|
select.selectByVisibleText(text);
|
||||||
|
Thread.sleep(1000);
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
System.err.format("No Element Found to Machint_selectVisibleText \t" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_Waits(String WaitType) throws Exception
|
||||||
|
{
|
||||||
|
switch (WaitType)
|
||||||
|
{
|
||||||
|
case "visibilityOf":
|
||||||
|
Machint_visibilityOf();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "visibilityOfAllElements":
|
||||||
|
Machint_visibilityOfAllElements();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "elementToBeClickable":
|
||||||
|
Machint_elementToBeClickable();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "elementToBeSelected":
|
||||||
|
Machint_elementToBeSelected();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "elementSelectionStateToBe":
|
||||||
|
Machint_elementSelectionStateToBe();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "frameToBeAvailableAndSwitchToIt":
|
||||||
|
Machint_frameToBeAvailableAndSwitchToIt();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "invisibilityOf":
|
||||||
|
Machint_invisibilityOf();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "invisibilityOfAllElements":
|
||||||
|
Machint_invisibilityOfAllElements();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
System.out.println(WaitType+ " is invalid");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_visibilityOf()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
wait = new WebDriverWait(driver, 1000);
|
||||||
|
if(element != null)
|
||||||
|
{
|
||||||
|
wait.until(ExpectedConditions.visibilityOf(element));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
System.err.format("No Element Found to Machint_visibilityOf \t" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_visibilityOfAllElements()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
wait = new WebDriverWait(driver,1000);
|
||||||
|
if(element != null)
|
||||||
|
{
|
||||||
|
wait.until(ExpectedConditions.visibilityOfAllElements(element));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
System.err.format("No Element Found to Machint_visibilityOfAllElements \t" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_elementToBeClickable()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
wait = new WebDriverWait(driver,1000);
|
||||||
|
if(element != null)
|
||||||
|
{
|
||||||
|
wait.until(ExpectedConditions.elementToBeClickable(element));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
System.err.format("No Element Found to Machint_elementToBeClickable \t" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_elementSelectionStateToBe()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
wait = new WebDriverWait(driver,1000);
|
||||||
|
if(element != null)
|
||||||
|
{
|
||||||
|
wait.until(ExpectedConditions.elementSelectionStateToBe(element, flag));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
System.err.format("No Element Found to Machint_elementSelectionStateToBe \t" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_elementToBeSelected()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
wait = new WebDriverWait(driver,1000);
|
||||||
|
if(element != null)
|
||||||
|
{
|
||||||
|
wait.until(ExpectedConditions.elementToBeSelected(element));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
System.err.format("No Element Found to Machint_elementToBeSelected \t" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_frameToBeAvailableAndSwitchToIt()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
wait = new WebDriverWait(driver,1000);
|
||||||
|
if(element != null)
|
||||||
|
{
|
||||||
|
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(element));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
System.err.format("No Element Found to Machint_frameToBeAvailableAndSwitchToIt \t" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_invisibilityOf()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
wait = new WebDriverWait(driver,1000);
|
||||||
|
if(by != null)
|
||||||
|
{
|
||||||
|
wait.until(ExpectedConditions.invisibilityOf(element));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
System.err.format("No Element Found to Machint_invisibilityOf \t" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_invisibilityOfAllElements()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
wait = new WebDriverWait(driver,1000);
|
||||||
|
if(element != null)
|
||||||
|
{
|
||||||
|
wait.until(ExpectedConditions.invisibilityOfAllElements(element));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
System.err.format("No Element Found to Machint_invisibilityOfAllElements \t" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_JSHighlight(WebElement ele)
|
||||||
|
{
|
||||||
|
if (driver instanceof JavascriptExecutor)
|
||||||
|
{
|
||||||
|
((JavascriptExecutor) driver).executeScript("arguments[0].setAttribute('style', 'background: skyblue; border: 2px solid yellow;');",ele);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean Machint_acceptAlert()
|
||||||
|
{
|
||||||
|
boolean boolFound = false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
wait = new WebDriverWait(driver, 1000);
|
||||||
|
wait.until(ExpectedConditions.alertIsPresent());
|
||||||
|
alert = driver.switchTo().alert();
|
||||||
|
if (alert != null)
|
||||||
|
{
|
||||||
|
alert.accept();
|
||||||
|
boolFound = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (NoAlertPresentException ex)
|
||||||
|
{
|
||||||
|
boolFound = false;
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
return boolFound;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean Machint_dismissAlert()
|
||||||
|
{
|
||||||
|
boolean boolFound = false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
wait = new WebDriverWait(driver, 1000);
|
||||||
|
wait.until(ExpectedConditions.alertIsPresent());
|
||||||
|
alert = driver.switchTo().alert();
|
||||||
|
if (alert != null)
|
||||||
|
{
|
||||||
|
alert.dismiss();
|
||||||
|
boolFound = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (NoAlertPresentException ex)
|
||||||
|
{
|
||||||
|
boolFound = false;
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
return boolFound;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean Machint_getAlertText()
|
||||||
|
{
|
||||||
|
boolean boolFound = false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
wait = new WebDriverWait(driver, 1000);
|
||||||
|
wait.until(ExpectedConditions.alertIsPresent());
|
||||||
|
alert = driver.switchTo().alert();
|
||||||
|
String AlertMsg=driver.switchTo().alert().getText();
|
||||||
|
if (alert != null)
|
||||||
|
{
|
||||||
|
alert.accept();
|
||||||
|
System.out.println(AlertMsg);
|
||||||
|
boolFound = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (NoAlertPresentException ex)
|
||||||
|
{
|
||||||
|
boolFound = false;
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
return boolFound;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_getTitle(String Expected)
|
||||||
|
{
|
||||||
|
String Title = driver.getTitle();
|
||||||
|
Assert.assertEquals(Title, Expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String Machint_AssertEquals(String LocatorType, String LocatorValue, String expectedValue)
|
||||||
|
{
|
||||||
|
locator = Machint_locator(LocatorType, LocatorValue);
|
||||||
|
actualValue = driver.findElement(locator).getText();
|
||||||
|
System.out.println("Actual Value is \t"+actualValue);
|
||||||
|
Assert.assertEquals(actualValue, expectedValue);
|
||||||
|
return actualValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean Machint_NotEquals_Validation(String LocatorType,String LocatorValue, String expected)
|
||||||
|
{
|
||||||
|
locator = Machint_locator(LocatorType, LocatorValue);
|
||||||
|
String element = driver.findElement(locator).getText();
|
||||||
|
flag = false;
|
||||||
|
if(element != null)
|
||||||
|
{
|
||||||
|
Assert.assertNotEquals(element, expected);
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
|
||||||
|
{
|
||||||
|
System.out.println("Actual Value and Expected Value Matched");
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean Machint_True_Validation(String LocatorType,String LocatorValue, String expected)
|
||||||
|
{
|
||||||
|
locator = Machint_locator(LocatorType, LocatorValue);
|
||||||
|
boolean condition = driver.findElement(locator).getText() != null;
|
||||||
|
flag = false;
|
||||||
|
|
||||||
|
if(element != null)
|
||||||
|
{
|
||||||
|
Assert.assertTrue( condition, expected);
|
||||||
|
flag = true;
|
||||||
|
System.out.println(flag);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
System.err.format("Validation is not performed");
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean Machint_False_Validation(String LocatorType,String LocatorValue, String expected)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
locator = Machint_locator(LocatorType, LocatorValue);
|
||||||
|
boolean condition = driver.findElement(locator).getText() != null;
|
||||||
|
flag = false;
|
||||||
|
|
||||||
|
if(element != null)
|
||||||
|
{
|
||||||
|
Assert.assertFalse( condition, expected);
|
||||||
|
flag = true;
|
||||||
|
System.out.println(flag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
System.err.format("Validation is not performed");
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_mouseHover(String LocatorValue) throws Throwable
|
||||||
|
{
|
||||||
|
action = new Actions(driver);
|
||||||
|
element = driver.findElement(By.xpath(LocatorValue));
|
||||||
|
action.moveToElement(element).build().perform();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_Frame_webElement(String LocatorType, String LocatorValue, String WaitType) throws Exception
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
locator = Machint_locator(LocatorType, LocatorValue);
|
||||||
|
element = driver.findElement(locator);
|
||||||
|
Machint_Waits(WaitType);
|
||||||
|
driver.switchTo().frame(element);
|
||||||
|
Thread.sleep(2000);
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
System.err.format("No Element Found to perform Machint_Frame \t" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Machint_switchToFrame(String ParentFrame, String ChildFrame)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
driver.switchTo().frame(ParentFrame).switchTo().frame(ChildFrame);
|
||||||
|
}
|
||||||
|
catch (NoSuchFrameException e)
|
||||||
|
{
|
||||||
|
System.out.println("Unable to locate frame with id " + ParentFrame + " or " + ChildFrame + e.getStackTrace());
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
System.out.println("Unable to navigate to innerframe with id "+ ChildFrame + "which is present on frame with id"+ParentFrame + e.getStackTrace());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_defaultframe()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
driver.switchTo().defaultContent();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
System.out.println("unable to navigate back to parent frame"+e.getStackTrace());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_windowhandle()
|
||||||
|
{
|
||||||
|
String Parent=driver.getWindowHandle();
|
||||||
|
Set<String>s=driver.getWindowHandles();
|
||||||
|
Iterator<String> I1= s.iterator();
|
||||||
|
|
||||||
|
while(I1.hasNext())
|
||||||
|
{
|
||||||
|
String child_window=I1.next();
|
||||||
|
if(!Parent.equals(child_window))
|
||||||
|
{
|
||||||
|
driver.switchTo().window(child_window);
|
||||||
|
System.out.println(driver.switchTo().window(child_window).getTitle());
|
||||||
|
driver.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_YesterdayDate()
|
||||||
|
{
|
||||||
|
DateFormat sdf = new SimpleDateFormat("MM/dd/YYYY");
|
||||||
|
// Calendar today = Calendar.getInstance();
|
||||||
|
Calendar yesterday = Calendar.getInstance();
|
||||||
|
yesterday.add(Calendar.DATE, -1);
|
||||||
|
Date d = yesterday.getTime(); // get a Date object
|
||||||
|
String yesDate = sdf.format(d); // toString for Calendars is mostly not really useful
|
||||||
|
System.out.println("Yesterday Date is \t"+yesDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_CurrentDate()
|
||||||
|
{
|
||||||
|
DateFormat sdf = new SimpleDateFormat("dd/MM/YYYY");
|
||||||
|
Date date = new Date();
|
||||||
|
String Date = sdf.format(date);
|
||||||
|
System.out.println("Current Date is\t"+Date);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_FutureDate()
|
||||||
|
{
|
||||||
|
DateFormat sdf = new SimpleDateFormat("MM/dd/YYYY");
|
||||||
|
Calendar futureDate = Calendar.getInstance();
|
||||||
|
futureDate.add(Calendar.DATE, 7);
|
||||||
|
Date date = futureDate.getTime();
|
||||||
|
String Date = sdf.format(date);
|
||||||
|
System.out.println("Future Date is\t"+Date);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_CurrentMonth()
|
||||||
|
{
|
||||||
|
int month;
|
||||||
|
Calendar cal = Calendar.getInstance();
|
||||||
|
month = cal.get(Calendar.MONTH);
|
||||||
|
month = month+1;
|
||||||
|
System.out.println("Current month is " + month);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_CurrentYear()
|
||||||
|
{
|
||||||
|
int year;
|
||||||
|
Calendar cal = Calendar.getInstance();
|
||||||
|
year = cal.get(Calendar.YEAR);
|
||||||
|
System.out.println("Current year is " + year);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Machint_getToolTip() throws Exception
|
||||||
|
{
|
||||||
|
// Get tooltip text
|
||||||
|
String toolTipText = element.getAttribute("title").toString();
|
||||||
|
System.out.println("Tool tip text present :- " + toolTipText);
|
||||||
|
|
||||||
|
// Compare toll tip text
|
||||||
|
// Assert.assertEquals(toolTipText, expectedValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Boolean Machint_DragandDropby(String LocatorType, String LocatorValue, int x, int y) throws Exception
|
||||||
|
{
|
||||||
|
boolean flag = false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
locator = Machint_locator(LocatorType, LocatorValue);
|
||||||
|
element = driver.findElement(locator);
|
||||||
|
action=new Actions(driver);
|
||||||
|
action.dragAndDropBy(element, x, y).build().perform();
|
||||||
|
flag = true;
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isCheckBoxSelected(String LocatorType, String LocatorValue) throws Throwable
|
||||||
|
{
|
||||||
|
boolean flag = false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
locator = Machint_locator(LocatorType, LocatorValue);
|
||||||
|
if (driver.findElement(locator).isSelected()) {
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (NoSuchElementException e)
|
||||||
|
{
|
||||||
|
flag = false;
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
202
src/main/java/com/machint/automation/Utils/ExcelData.java
Normal file
202
src/main/java/com/machint/automation/Utils/ExcelData.java
Normal file
|
@ -0,0 +1,202 @@
|
||||||
|
package com.machint.automation.Utils;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.poi.ss.usermodel.Cell;
|
||||||
|
import org.apache.poi.ss.usermodel.DataFormatter;
|
||||||
|
import org.apache.poi.ss.usermodel.Row;
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFCell;
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFRow;
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
|
|
||||||
|
public class ExcelData
|
||||||
|
{
|
||||||
|
static XSSFCell cell, cell0;
|
||||||
|
static XSSFSheet sheet;
|
||||||
|
static XSSFWorkbook excelWorkbook;
|
||||||
|
static XSSFRow row;
|
||||||
|
static String filePath = "MAF/testdatafolder/TestData.xlsx";
|
||||||
|
static File file;
|
||||||
|
static FileInputStream inputFile;
|
||||||
|
static FileOutputStream outputFile;
|
||||||
|
static int rowcount;
|
||||||
|
static int i,j;
|
||||||
|
public static String cellValue, celldata;
|
||||||
|
|
||||||
|
public static void readExcel(String sheetName) throws Exception
|
||||||
|
{
|
||||||
|
file = new File(filePath);
|
||||||
|
FileInputStream inputStream = new FileInputStream(file);
|
||||||
|
excelWorkbook = new XSSFWorkbook(inputStream);
|
||||||
|
sheet = excelWorkbook.getSheet(sheetName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getRowCount()
|
||||||
|
{
|
||||||
|
int rowcount = sheet.getLastRowNum();
|
||||||
|
return rowcount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getColumnCount()
|
||||||
|
{
|
||||||
|
row = sheet.getRow(0);
|
||||||
|
int colCount = row.getLastCellNum();
|
||||||
|
return colCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getCellContentAsString(Cell cell) throws Exception
|
||||||
|
{
|
||||||
|
switch (cell.getCellType())
|
||||||
|
{
|
||||||
|
|
||||||
|
case Cell.CELL_TYPE_BLANK:
|
||||||
|
celldata="";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Cell.CELL_TYPE_STRING:
|
||||||
|
celldata=cell.getStringCellValue();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Cell.CELL_TYPE_NUMERIC:
|
||||||
|
DataFormatter df=new DataFormatter();
|
||||||
|
celldata=df.formatCellValue(cell);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Cell.CELL_TYPE_FORMULA:
|
||||||
|
celldata=String.valueOf(cell.getNumericCellValue());
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Cell.CELL_TYPE_BOOLEAN:
|
||||||
|
celldata=String.valueOf(cell.getBooleanCellValue());
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
celldata=cell.getStringCellValue();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return celldata;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getCellData(int rowcount, int ColNum) throws Exception
|
||||||
|
{
|
||||||
|
String result = null;
|
||||||
|
|
||||||
|
cell = sheet.getRow(rowcount).getCell(ColNum);
|
||||||
|
result = getCellContentAsString(cell);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String Machint_TestDataFromExcel(String ColumnName) throws Exception
|
||||||
|
{
|
||||||
|
for(i=1;i<=getRowCount() ; i++)
|
||||||
|
{
|
||||||
|
row = sheet.getRow(i);
|
||||||
|
cell=row.getCell(0);
|
||||||
|
String Actionvalue = cell.getStringCellValue();
|
||||||
|
if(Actionvalue.equalsIgnoreCase(ColumnName))
|
||||||
|
{
|
||||||
|
cell = sheet.getRow(i).getCell(1);
|
||||||
|
cellValue = getCellContentAsString(cell);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return cellValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String Machint_TestDataFromExcelFile(String ColumnName) throws Exception
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
|
||||||
|
int totalNoOfRows = sheet.getLastRowNum() - sheet.getFirstRowNum();
|
||||||
|
row = sheet.getRow(0);
|
||||||
|
HashMap<String, String> map = new HashMap<String, String>();
|
||||||
|
|
||||||
|
for (int row2 = 1; row2 < totalNoOfRows; row2++) {
|
||||||
|
|
||||||
|
Row row1 = sheet.getRow(row2);
|
||||||
|
if ((row1.getCell(0).getStringCellValue()).equals(ColumnName)) {
|
||||||
|
for (int col = 1; col < row1.getLastCellNum(); col++)
|
||||||
|
{
|
||||||
|
map.put(row.getCell(col).getStringCellValue(), row1.getCell(col).getStringCellValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println(map);
|
||||||
|
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return cellValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static List<LinkedHashMap<String, String>> getExcelDataAsMap() throws Exception
|
||||||
|
{
|
||||||
|
// Initialized an empty List which retain order
|
||||||
|
List<LinkedHashMap<String, String>> dataList = new ArrayList<>();
|
||||||
|
// Get data set count which will be equal to cell counts of any row
|
||||||
|
int countOfDataSet = sheet.getRow(0).getPhysicalNumberOfCells();
|
||||||
|
// Skipping first column as it is field names
|
||||||
|
for (int i = 1; i < countOfDataSet; i++)
|
||||||
|
{
|
||||||
|
System.out.println("Number of countOfDataSet \t"+countOfDataSet);
|
||||||
|
// Creating a map to store each data set individually
|
||||||
|
LinkedHashMap<String, String> data = new LinkedHashMap<>();
|
||||||
|
// Get the row i.e field names count
|
||||||
|
int rowCount = sheet.getPhysicalNumberOfRows();
|
||||||
|
System.out.println("Row count is \t"+rowCount);
|
||||||
|
// Now we need to iterate all rows but cell should increases once all row is done
|
||||||
|
// i.e. (1,1),(2,1),(3,1),(4,1),(5,1) - First iteration
|
||||||
|
// (1,2),(2,2),(3,2),(4,2),(5,2) - Second iteration
|
||||||
|
// (1,3),(2,3),(3,3),(4,3),(5,3) - Third iteration
|
||||||
|
for(int j = 1; j<rowCount ; j++)
|
||||||
|
{
|
||||||
|
row = sheet.getRow(j);
|
||||||
|
// Field name is constant as 0th index
|
||||||
|
// cell = row.getCell(0);
|
||||||
|
// String fieldName = getCellContentAsString(cell);
|
||||||
|
String fieldName = row.getCell(0).getStringCellValue();
|
||||||
|
|
||||||
|
System.out.println("Excel field name is \t"+fieldName);
|
||||||
|
|
||||||
|
cell = row.getCell(i);
|
||||||
|
String fieldValue = getCellContentAsString(cell);
|
||||||
|
|
||||||
|
System.out.println("Excel field Value is \t"+fieldValue);
|
||||||
|
// Add data in map
|
||||||
|
data.put(fieldName, fieldValue);
|
||||||
|
|
||||||
|
}
|
||||||
|
// Add map to list after each iteration
|
||||||
|
dataList.add(data);
|
||||||
|
|
||||||
|
}
|
||||||
|
return dataList;
|
||||||
|
}
|
||||||
|
|
||||||
|
// public static void main(String[] args) throws EncryptedDocumentException, IOException
|
||||||
|
// {
|
||||||
|
//
|
||||||
|
// List<LinkedHashMap<String, String>> mapDataList = getExcelDataAsMap();
|
||||||
|
//
|
||||||
|
// for(int k = 0; k<mapDataList.size() ; k++)
|
||||||
|
// {
|
||||||
|
// System.out.println("Data Set "+ (k+1) +" : ");
|
||||||
|
// for(String s: mapDataList.get(k).keySet())
|
||||||
|
// {
|
||||||
|
// System.out.println("Value of "+s +" is : "+mapDataList.get(k).get(s));
|
||||||
|
// }
|
||||||
|
// System.out.println("========================================================");
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
41
src/main/java/com/machint/automation/Utils/ext.java
Normal file
41
src/main/java/com/machint/automation/Utils/ext.java
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
package com.machint.automation.Utils;
|
||||||
|
//package com.Utils;
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//import org.junit.AfterClass;
|
||||||
|
//import org.junit.BeforeClass;
|
||||||
|
//
|
||||||
|
//import com.machint.automation.base.BaseClass;
|
||||||
|
//import com.relevantcodes.extentreports.ExtentReports;
|
||||||
|
//import com.relevantcodes.extentreports.ExtentTest;
|
||||||
|
//
|
||||||
|
//public class ext extends BaseClass
|
||||||
|
//{
|
||||||
|
// protected ExtentTest test;
|
||||||
|
// ExtentReports report;
|
||||||
|
// @BeforeClass
|
||||||
|
// public void startTest()
|
||||||
|
// {
|
||||||
|
// report = new ExtentReports(System.getProperty("user.dir")+"\\ExtentReportResults.html");
|
||||||
|
// test = report.startTest("Ext");
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /*
|
||||||
|
// * @Test public void extentReportsDemo() {
|
||||||
|
// * System.setProperty("webdriver.chrome.driver",
|
||||||
|
// * "D:\\SubmittalExchange_TFS\\QA\\Automation\\3rdparty\\chrome\\chromedriver.exe"
|
||||||
|
// * ); WebDriver driver = new ChromeDriver();
|
||||||
|
// * driver.get("https://www.google.co.in");
|
||||||
|
// * if(driver.getTitle().equals("Google")) { test.log(LogStatus.PASS,
|
||||||
|
// * "Navigated to the specified URL"); } else { test.log(LogStatus.FAIL,
|
||||||
|
// * "Test Failed"); } }
|
||||||
|
// */
|
||||||
|
// @AfterClass
|
||||||
|
// public void endTest()
|
||||||
|
// {
|
||||||
|
// report.endTest(test);
|
||||||
|
// report.flush();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
99
src/main/java/com/machint/automation/base/BaseClass.java
Normal file
99
src/main/java/com/machint/automation/base/BaseClass.java
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
package com.machint.automation.base;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
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.FirefoxOptions;
|
||||||
|
import org.openqa.selenium.ie.InternetExplorerDriver;
|
||||||
|
import org.openqa.selenium.remote.CapabilityType;
|
||||||
|
import org.openqa.selenium.remote.DesiredCapabilities;
|
||||||
|
import org.testng.annotations.AfterSuite;
|
||||||
|
|
||||||
|
import com.machint.automation.Utils.ExcelData;
|
||||||
|
|
||||||
|
public class BaseClass extends ExcelData
|
||||||
|
{
|
||||||
|
public static WebDriver driver;
|
||||||
|
static DesiredCapabilities ieCapabilities;
|
||||||
|
|
||||||
|
public static WebDriver launchBrowser(String browserType, String appURL) throws Exception
|
||||||
|
{
|
||||||
|
switch (browserType)
|
||||||
|
{
|
||||||
|
case "Chrome":
|
||||||
|
initChromeDriver(appURL);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "Firefox":
|
||||||
|
initFirefoxDriver(appURL);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "InternetExplorer":
|
||||||
|
initInternetExplorer(appURL);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
System.out.println("browser : " + browserType+ " is invalid");
|
||||||
|
}
|
||||||
|
return driver;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void initChromeDriver(String appURL) throws Exception
|
||||||
|
{
|
||||||
|
System.out.println("Launching google chrome with new profile..");
|
||||||
|
System.setProperty("webdriver.chrome.driver", "MAF/Drivers/geckodriver");
|
||||||
|
ChromeOptions options = new ChromeOptions();
|
||||||
|
options.addArguments("--headless", "--disable-gpu", "--window-size=1920,1200","--ignore-certificate-errors", "--silent");
|
||||||
|
|
||||||
|
driver = new ChromeDriver(options);
|
||||||
|
driver.manage().window().maximize();
|
||||||
|
driver.get(appURL);
|
||||||
|
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void initFirefoxDriver(String appURL) throws Exception
|
||||||
|
{
|
||||||
|
System.out.println("Launching Firefox browser..");
|
||||||
|
System.setProperty("webdriver.gecko.driver", "MAF/Drivers/geckodriver");
|
||||||
|
FirefoxOptions options = new FirefoxOptions();
|
||||||
|
options.addArguments("--headless", "--disable-gpu", "--window-size=1920,1200","--ignore-certificate-errors", "--silent");
|
||||||
|
driver = new FirefoxDriver(options);
|
||||||
|
|
||||||
|
driver.manage().window().maximize();
|
||||||
|
driver.get(appURL);
|
||||||
|
driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
|
||||||
|
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void initInternetExplorer(String appURL) throws Exception
|
||||||
|
{
|
||||||
|
System.out.println("Launching InternetExplorer browser..");
|
||||||
|
System.setProperty("webdriver.ie.driver", System.getProperty("user.dir")+"\\Drivers\\IEDriverServer.exe");
|
||||||
|
|
||||||
|
ieCapabilities = DesiredCapabilities.internetExplorer();
|
||||||
|
ieCapabilities.setCapability(InternetExplorerDriver.ENABLE_PERSISTENT_HOVERING, false);
|
||||||
|
ieCapabilities.setCapability(InternetExplorerDriver.UNEXPECTED_ALERT_BEHAVIOR, "accept");
|
||||||
|
// ieCapabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);
|
||||||
|
ieCapabilities.setCapability(InternetExplorerDriver.NATIVE_EVENTS, true);
|
||||||
|
ieCapabilities.setCapability(InternetExplorerDriver.REQUIRE_WINDOW_FOCUS, true);
|
||||||
|
ieCapabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
|
||||||
|
ieCapabilities.setCapability("disable-popup-blocking", true);
|
||||||
|
ieCapabilities.setCapability("ignoreProtectedModeSettings", true);
|
||||||
|
ieCapabilities.setJavascriptEnabled(true);
|
||||||
|
|
||||||
|
driver = new InternetExplorerDriver(ieCapabilities);
|
||||||
|
driver.manage().window().maximize();
|
||||||
|
driver.get(appURL);
|
||||||
|
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterSuite
|
||||||
|
public void Close()
|
||||||
|
{
|
||||||
|
driver.quit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
39
src/main/java/com/machint/automation/base/ExtentDemo.java
Normal file
39
src/main/java/com/machint/automation/base/ExtentDemo.java
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
//package com.machint.automation.base;
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//import org.junit.AfterClass;
|
||||||
|
//import org.junit.BeforeClass;
|
||||||
|
//import com.relevantcodes.extentreports.ExtentReports;
|
||||||
|
//import com.relevantcodes.extentreports.ExtentTest;
|
||||||
|
//
|
||||||
|
//public class ExtentDemo {
|
||||||
|
//protected static ExtentTest test;
|
||||||
|
//static ExtentReports report;
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//@BeforeClass
|
||||||
|
//public static void startTest()
|
||||||
|
//{
|
||||||
|
//report = new ExtentReports(System.getProperty("D:\\WorkspaceD\\AutomationFramework\\EReorts")+"\\ExtentReportResults.html");
|
||||||
|
//test = report.startTest("ExtentDemo");
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
///*
|
||||||
|
// * @Test public void extentReportsDemo() {
|
||||||
|
// * System.setProperty("webdriver.chrome.driver",
|
||||||
|
// * "D:\\SubmittalExchange_TFS\\QA\\Automation\\3rdparty\\chrome\\chromedriver.exe"
|
||||||
|
// * ); WebDriver driver = new ChromeDriver();
|
||||||
|
// * driver.get("https://www.google.co.in");
|
||||||
|
// * if(driver.getTitle().equals("Google")) { test.log(LogStatus.PASS,
|
||||||
|
// * "Navigated to the specified URL"); } else { test.log(LogStatus.FAIL,
|
||||||
|
// * "Test Failed"); }
|
||||||
|
//
|
||||||
|
//}*/
|
||||||
|
//@AfterClass
|
||||||
|
//public static void endTest()
|
||||||
|
//{
|
||||||
|
//
|
||||||
|
//report.endTest(test);
|
||||||
|
//report.flush();
|
||||||
|
//}
|
||||||
|
//}
|
|
@ -0,0 +1,50 @@
|
||||||
|
package com.machint.automation.managers;
|
||||||
|
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* public String getReportConfigPath(){ Properties properties = null;
|
||||||
|
*
|
||||||
|
* @SuppressWarnings("null") String reportConfigPath =
|
||||||
|
* properties.getProperty("reportConfigPath"); if(reportConfigPath!= null) {
|
||||||
|
* return reportConfigPath; } return reportConfigPath;
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class ConfigFileReader {
|
||||||
|
private Properties properties;
|
||||||
|
private final String propertyFilePath = "src//test//resources//configs//Configuration.properties";
|
||||||
|
|
||||||
|
public ConfigFileReader() {
|
||||||
|
BufferedReader reader;
|
||||||
|
try {
|
||||||
|
reader = new BufferedReader(new FileReader(propertyFilePath));
|
||||||
|
properties = new Properties();
|
||||||
|
try {
|
||||||
|
properties.load(reader);
|
||||||
|
reader.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new RuntimeException("Configuration.properties not found at " + propertyFilePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getReportConfigPath() {
|
||||||
|
String reportConfigPath = properties.getProperty("reportConfigPath");
|
||||||
|
if (reportConfigPath != null) return reportConfigPath;
|
||||||
|
else throw new RuntimeException("Report Config Path not specified in the Configuration.properties");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,67 @@
|
||||||
|
package com.machint.automation.managers;
|
||||||
|
import java.io.File;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import com.aventstack.extentreports.ExtentReports;
|
||||||
|
import com.aventstack.extentreports.reporter.ExtentHtmlReporter;
|
||||||
|
import com.aventstack.extentreports.reporter.configuration.ChartLocation;
|
||||||
|
import com.aventstack.extentreports.reporter.configuration.Theme;
|
||||||
|
|
||||||
|
public class ExtentManager {
|
||||||
|
public static final String FILE_LOCATION = "MAF";
|
||||||
|
|
||||||
|
private static String timestamp1 = new SimpleDateFormat("yyyy_MM_dd__hh_mm_ss").format(new Date());
|
||||||
|
private static ExtentReports extent;
|
||||||
|
private static String reportFileName = "Test-Automaton-Report.html";
|
||||||
|
private static String fileSeperator = System.getProperty("file.separator");
|
||||||
|
private static String reportFilepath = FILE_LOCATION +fileSeperator+ "TestReport";
|
||||||
|
private static String reportFileLocation = reportFilepath +fileSeperator+ reportFileName;
|
||||||
|
|
||||||
|
|
||||||
|
public static ExtentReports getInstance() {
|
||||||
|
if (extent == null)
|
||||||
|
createInstance();
|
||||||
|
return extent;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Create an extent report instance
|
||||||
|
public static ExtentReports createInstance() {
|
||||||
|
String fileName = getReportPath(reportFilepath);
|
||||||
|
|
||||||
|
ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter(fileName);
|
||||||
|
htmlReporter.config().setTestViewChartLocation(ChartLocation.BOTTOM);
|
||||||
|
htmlReporter.config().setChartVisibilityOnOpen(true);
|
||||||
|
htmlReporter.config().setTheme(Theme.STANDARD);
|
||||||
|
htmlReporter.config().setDocumentTitle(reportFileName);
|
||||||
|
htmlReporter.config().setEncoding("utf-8");
|
||||||
|
htmlReporter.config().setReportName(reportFileName);
|
||||||
|
htmlReporter.config().setTimeStampFormat("EEEE, MMMM dd, yyyy, hh:mm a '('zzz')'");
|
||||||
|
|
||||||
|
extent = new ExtentReports();
|
||||||
|
extent.attachReporter(htmlReporter);
|
||||||
|
//Set environment details
|
||||||
|
extent.setSystemInfo("OS", "Windows");
|
||||||
|
extent.setSystemInfo("AUT", "QA");
|
||||||
|
|
||||||
|
return extent;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Create the report path
|
||||||
|
private static String getReportPath (String path) {
|
||||||
|
File testDirectory = new File(path);
|
||||||
|
if (!testDirectory.exists()) {
|
||||||
|
if (testDirectory.mkdir()) {
|
||||||
|
System.out.println("Directory: " + path + " is created!" );
|
||||||
|
return reportFileLocation;
|
||||||
|
} else {
|
||||||
|
System.out.println("Failed to create directory: " + path);
|
||||||
|
return System.getProperty("user.dir");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
System.out.println("Directory already exists: " + path);
|
||||||
|
}
|
||||||
|
return reportFileLocation;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
package com.machint.automation.managers;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.aventstack.extentreports.ExtentReports;
|
||||||
|
import com.aventstack.extentreports.ExtentTest;
|
||||||
|
|
||||||
|
public class ExtentTestManager {
|
||||||
|
static Map<Integer, ExtentTest> extentTestMap = new HashMap<Integer, ExtentTest>();
|
||||||
|
static ExtentReports extent = ExtentManager.getInstance();
|
||||||
|
|
||||||
|
public static synchronized ExtentTest getTest() {
|
||||||
|
return (ExtentTest) extentTestMap.get((int) (long) (Thread.currentThread().getId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static synchronized void endTest() {
|
||||||
|
extent.flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static synchronized ExtentTest startTest(String testName) {
|
||||||
|
ExtentTest test = extent.createTest(testName);
|
||||||
|
extentTestMap.put((int) (long) (Thread.currentThread().getId()), test);
|
||||||
|
return test;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package com.machint.automation.managers;
|
||||||
|
|
||||||
|
public class FileReaderManager {
|
||||||
|
private static FileReaderManager fileReaderManager = new FileReaderManager();
|
||||||
|
private static ConfigFileReader configFileReader;
|
||||||
|
|
||||||
|
private FileReaderManager() {}
|
||||||
|
|
||||||
|
public static FileReaderManager getInstance() {
|
||||||
|
return fileReaderManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConfigFileReader getConfigReader() {
|
||||||
|
return (configFileReader == null) ? new ConfigFileReader() : configFileReader;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,88 @@
|
||||||
|
package com.machint.automation.managers;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.openqa.selenium.OutputType;
|
||||||
|
import org.openqa.selenium.TakesScreenshot;
|
||||||
|
import org.testng.ITestContext;
|
||||||
|
import org.testng.ITestListener;
|
||||||
|
import org.testng.ITestResult;
|
||||||
|
|
||||||
|
import com.aventstack.extentreports.Status;
|
||||||
|
import com.machint.automation.base.BaseClass;
|
||||||
|
|
||||||
|
public class TestListener extends BaseClass implements ITestListener
|
||||||
|
{
|
||||||
|
|
||||||
|
public void onStart(ITestContext context)
|
||||||
|
{
|
||||||
|
System.out.println("*** Test Suite " + context.getName() + " started ***");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onFinish(ITestContext context)
|
||||||
|
{
|
||||||
|
System.out.println(("*** Test Suite " + context.getName() + " ending ***"));
|
||||||
|
ExtentTestManager.endTest();
|
||||||
|
ExtentManager.getInstance().flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onTestStart(ITestResult result) {
|
||||||
|
System.out.println(("*** Running test method " + result.getMethod().getMethodName() + "..."));
|
||||||
|
ExtentTestManager.startTest(result.getMethod().getMethodName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onTestSuccess(ITestResult result)
|
||||||
|
{
|
||||||
|
System.out.println("*** Executed " + result.getMethod().getMethodName() + " test successfully...");
|
||||||
|
ExtentTestManager.getTest().log(Status.PASS, "Test passed");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @Override public void onTestFailure(ITestResult result) {
|
||||||
|
* System.out.println("***** Error "+result.getName()+" test has failed *****");
|
||||||
|
* String methodName=result.getName().toString().trim(); ITestContext context =
|
||||||
|
* result.getTestContext(); WebDriver driver =
|
||||||
|
* (WebDriver)context.getAttribute("driver"); takeScreenShot(methodName,
|
||||||
|
* driver); }
|
||||||
|
*
|
||||||
|
* public void takeScreenShot(String methodName, WebDriver driver) { File
|
||||||
|
* scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); //The
|
||||||
|
* below method will save the screen shot in d drive with test method name try {
|
||||||
|
* FileUtils.copyFile(scrFile, new File(filePath+methodName+".png"));
|
||||||
|
* System.out.println("***Placed screen shot in "+filePath+" ***"); } catch
|
||||||
|
* (IOException e) { e.printStackTrace(); } }
|
||||||
|
*/
|
||||||
|
|
||||||
|
public void onTestFailure(ITestResult result)
|
||||||
|
{
|
||||||
|
System.out.println("*** Test execution " + result.getMethod().getMethodName() + " failed...");
|
||||||
|
ExtentTestManager.getTest().log(Status.FAIL, "Test Failed");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
TakesScreenshot screenshot=(TakesScreenshot)driver;
|
||||||
|
File src=screenshot.getScreenshotAs(OutputType.FILE);
|
||||||
|
String timestamp = new SimpleDateFormat("yyyy_MM_dd__hh_mm_ss").format(new Date());
|
||||||
|
FileUtils.copyFile(src, new File("MAF/ScreenShot /"+result.getName()+timestamp+".png"));
|
||||||
|
System.out.println("Successfully captured a screenshot");
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
System.out.println("Exception while taking screenshot "+e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onTestSkipped(ITestResult result)
|
||||||
|
{
|
||||||
|
System.out.println("*** Test " + result.getMethod().getMethodName() + " skipped...");
|
||||||
|
ExtentTestManager.getTest().log(Status.SKIP, "Test Skipped");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onTestFailedButWithinSuccessPercentage(ITestResult result)
|
||||||
|
{
|
||||||
|
System.out.println("*** Test failed but within percentage % " + result.getMethod().getMethodName());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
41
src/main/java/com/machint/automation/model/FormObject.java
Normal file
41
src/main/java/com/machint/automation/model/FormObject.java
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
package com.machint.automation.model;
|
||||||
|
|
||||||
|
public class FormObject {
|
||||||
|
|
||||||
|
private String environment;
|
||||||
|
private String browser;
|
||||||
|
private String product;
|
||||||
|
private String testCase;
|
||||||
|
public String getEnvironment() {
|
||||||
|
return environment;
|
||||||
|
}
|
||||||
|
public void setEnvironment(String environment) {
|
||||||
|
this.environment = environment;
|
||||||
|
}
|
||||||
|
public String getBrowser() {
|
||||||
|
return browser;
|
||||||
|
}
|
||||||
|
public void setBrowser(String browser) {
|
||||||
|
this.browser = browser;
|
||||||
|
}
|
||||||
|
public String getProduct() {
|
||||||
|
return product;
|
||||||
|
}
|
||||||
|
public void setProduct(String product) {
|
||||||
|
this.product = product;
|
||||||
|
}
|
||||||
|
public String getTestCase() {
|
||||||
|
return testCase;
|
||||||
|
}
|
||||||
|
public void setTestCase(String testCase) {
|
||||||
|
this.testCase = testCase;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "FormObject [environment=" + environment + ", browser=" + browser + ", product=" + product
|
||||||
|
+ ", testCase=" + testCase + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
5
src/main/resources/application.properties
Normal file
5
src/main/resources/application.properties
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
#spring.main.web-application-type=none
|
||||||
|
server.port=8093
|
||||||
|
#spring.resources.static-locations=D:/Dev/mautomation/test-output
|
||||||
|
local.file.path=D:/M_Automation/MAF
|
||||||
|
server.servlet.context-path=/mautomation
|
91
src/main/resources/static/excel_test.html
Normal file
91
src/main/resources/static/excel_test.html
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<script src="https://kit.fontawesome.com/64d58efce2.js" crossorigin="anonymous"></script>
|
||||||
|
<script src="jquery-3.5.1.min.js"></script>
|
||||||
|
<link rel="stylesheet" href="style.css" />
|
||||||
|
<style type="text/css">
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<title>Automation Test</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<div class="forms-container">
|
||||||
|
<div class="signin-signup">
|
||||||
|
<form method="POST" enctype="multipart/form-data" id="fileUploadForm" class="sign-in-form">
|
||||||
|
<h2 class="title">Automation Test Run</h2>
|
||||||
|
<label for="file">Select Test Data file</label>
|
||||||
|
<div class="input-field">
|
||||||
|
<i class="fas fa-upload"></i>
|
||||||
|
<input type="file" class="form-control" id="uploadfile" placeholder="Upload File" name="file"></input>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn solid" id="btnSubmit">Upload and Run Test</button>
|
||||||
|
<div>
|
||||||
|
<a href="http://localhost:8092/get_excel_report">Get Test Report</a>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div id="overlay">
|
||||||
|
<div class="cv-spinner">
|
||||||
|
<span class="spinner"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="panels-container">
|
||||||
|
<div class="panel left-panel">
|
||||||
|
<img src="img/log.svg" class="image" alt="" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
jQuery(function($){
|
||||||
|
$(document).ajaxSend(function() {
|
||||||
|
$("#overlay").fadeIn(300);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$('#btnSubmit').click(function(event){
|
||||||
|
event.preventDefault();
|
||||||
|
var form = $('#fileUploadForm')[0];
|
||||||
|
var data = new FormData(form);
|
||||||
|
$("#btnSubmit").prop("disabled", true);
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
enctype: 'multipart/form-data',
|
||||||
|
url: '/run_excel',
|
||||||
|
data: data,
|
||||||
|
//http://api.jquery.com/jQuery.ajax/
|
||||||
|
//https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects
|
||||||
|
processData: false, //prevent jQuery from automatically transforming the data into a query string
|
||||||
|
contentType: false,
|
||||||
|
cache: false,
|
||||||
|
timeout: 600000,
|
||||||
|
success: function(data){
|
||||||
|
alert(data);
|
||||||
|
$("#btnSubmit").prop("disabled", false);
|
||||||
|
},
|
||||||
|
error: function (e) {
|
||||||
|
|
||||||
|
alert(e.responseText);
|
||||||
|
console.log("ERROR : ", e);
|
||||||
|
$("#btnSubmit").prop("disabled", false);
|
||||||
|
|
||||||
|
}
|
||||||
|
}).done(function() {
|
||||||
|
setTimeout(function(){
|
||||||
|
$("#overlay").fadeOut(300);
|
||||||
|
//window.location.replace("http://localhost");
|
||||||
|
},500);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
170
src/main/resources/static/index.html
Normal file
170
src/main/resources/static/index.html
Normal file
|
@ -0,0 +1,170 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="ISO-8859-1">
|
||||||
|
<title>Automation Testing</title>
|
||||||
|
<script src="jquery-3.5.1.min.js"></script>
|
||||||
|
<link rel="stylesheet" href="style.css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<h2 class="title">Automation Test</h2>
|
||||||
|
<form enctype="application/x-www-form-urlencoded" method="POST" id="#testForm" action="#">
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-25">
|
||||||
|
<label for="browser">Browser</label>
|
||||||
|
</div>
|
||||||
|
<div class="col-75">
|
||||||
|
<select name="browser" id="browserSelect">
|
||||||
|
<option value="Chrome">Chrome</option>
|
||||||
|
<option value="InternetExplorer">Internet Explorer</option>
|
||||||
|
<option value="Firefox">Firefox</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-25">
|
||||||
|
<label for="product">Product</label>
|
||||||
|
</div>
|
||||||
|
<div class="col-75">
|
||||||
|
<select name="product" id="productSelect">
|
||||||
|
<option value="">Please Select Product</option>
|
||||||
|
<option value="mwid">MWID</option>
|
||||||
|
<option value="parthanon">Parthanon</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-25">
|
||||||
|
<label for="environment">Select Environment</label>
|
||||||
|
</div>
|
||||||
|
<div class="col-75">
|
||||||
|
<select name="environment" id="envSelect">
|
||||||
|
<option value="http://104.211.74.54:8080/MWID/login">(http://104.211.74.54:8080/MWID/login)</option>
|
||||||
|
<option value="https://rainbowtest.appiancloud.com/suite/sites/parthenon">(https://rainbowtest.appiancloud.com/suite/sites/parthenon)</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-25">
|
||||||
|
<label for="testCase">Select Test Case</label>
|
||||||
|
</div>
|
||||||
|
<div class="col-75">
|
||||||
|
<select name="testCase" id="testCaseSelect">
|
||||||
|
<!-- <option value="HR_login_Testng.xml">HR_login_Testng.xml</option>
|
||||||
|
<option value="Insurance.xml">Insurance.xml</option>
|
||||||
|
<option value="pTestNG.xml">pTestNG.xml</option>
|
||||||
|
<option value="Registration_Testng.xml">Registration_Testng.xml</option> -->
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<input type="submit" value="Submit" id="btnSubmit">
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<a href="https://apps.machint.com/mautomation/get_xml_report">Get Test Report</a>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<div id="overlay">
|
||||||
|
<div class="cv-spinner">
|
||||||
|
<span class="spinner"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
jQuery(function($){
|
||||||
|
var environments = {
|
||||||
|
parthanon: 'https://rainbowtest.appiancloud.com/suite/sites/parthenon',
|
||||||
|
mwid: 'http://104.211.74.54:8080/MWID/login'
|
||||||
|
}
|
||||||
|
var testCases = {
|
||||||
|
mwid: 'HR_login_Testng.xml',
|
||||||
|
parthanon: 'Insurance.xml'
|
||||||
|
}
|
||||||
|
$("#productSelect").change(function () {
|
||||||
|
var productVal = this.value;
|
||||||
|
$('#testCaseSelect').empty();
|
||||||
|
$('#envSelect').empty();
|
||||||
|
$('#testCaseSelect').append(
|
||||||
|
$('<option></option>').val(testCases[productVal]).html(testCases[productVal])
|
||||||
|
);
|
||||||
|
$('#envSelect').append(
|
||||||
|
$('<option></option>').val(environments[productVal]).html(environments[productVal])
|
||||||
|
);
|
||||||
|
//$('#testCaseSelect').find('option[value="'+environments[productVal]+'"]').attr('selected','selected')
|
||||||
|
//$('#testCaseSelect').val(environments[productVal]);
|
||||||
|
});
|
||||||
|
$(document).ajaxSend(function() {
|
||||||
|
$("#overlay").fadeIn(300);
|
||||||
|
});
|
||||||
|
|
||||||
|
/* attach a submit handler to the form */
|
||||||
|
$('#btnSubmit').click(function(event){
|
||||||
|
|
||||||
|
/* stop form from submitting normally */
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
|
/* Send the data using post with element id name and name2*/
|
||||||
|
var runTestAjax = $.post('run_test', {
|
||||||
|
browser: $('#browserSelect').val(),
|
||||||
|
product: $('#productSelect').val(),
|
||||||
|
environment: $('#envSelect').val(),
|
||||||
|
testCase: $('#testCaseSelect').val()
|
||||||
|
});
|
||||||
|
|
||||||
|
/* Alerts the results */
|
||||||
|
runTestAjax.done(function(data) {
|
||||||
|
alert(data);
|
||||||
|
setTimeout(function(){
|
||||||
|
$("#overlay").fadeOut(300);
|
||||||
|
},500);
|
||||||
|
});
|
||||||
|
runTestAjax.fail(function() {
|
||||||
|
alert('Error Occured in Running Test');
|
||||||
|
$("#overlay").fadeOut(300);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
/*$('#btnSubmit').click(function(event){
|
||||||
|
event.preventDefault();
|
||||||
|
var form = $('#testForm')[0];
|
||||||
|
var data = new FormData(form);
|
||||||
|
alert(data);
|
||||||
|
$("#btnSubmit").prop("disabled", true);
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: '/run_test',
|
||||||
|
data: data,
|
||||||
|
//http://api.jquery.com/jQuery.ajax/
|
||||||
|
//https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects
|
||||||
|
processData: false, //prevent jQuery from automatically transforming the data into a query string
|
||||||
|
contentType: 'application/x-www-form-urlencoded',
|
||||||
|
cache: false,
|
||||||
|
timeout: 600000,
|
||||||
|
success: function(data){
|
||||||
|
alert(data);
|
||||||
|
$("#btnSubmit").prop("disabled", false);
|
||||||
|
},
|
||||||
|
error: function (e) {
|
||||||
|
|
||||||
|
alert(e.responseText);
|
||||||
|
console.log("ERROR : ", e);
|
||||||
|
$("#btnSubmit").prop("disabled", false);
|
||||||
|
|
||||||
|
}
|
||||||
|
}).done(function() {
|
||||||
|
setTimeout(function(){
|
||||||
|
$("#overlay").fadeOut(300);
|
||||||
|
//window.location.replace("http://localhost");
|
||||||
|
},500);
|
||||||
|
});
|
||||||
|
}); */
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
2
src/main/resources/static/jquery-3.5.1.min.js
vendored
Normal file
2
src/main/resources/static/jquery-3.5.1.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
105
src/main/resources/static/style.css
Normal file
105
src/main/resources/static/style.css
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@200;300;400;500;600;700;800&display=swap");
|
||||||
|
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body,
|
||||||
|
input {
|
||||||
|
font-family: "Poppins", sans-serif;
|
||||||
|
}
|
||||||
|
/* Style inputs, select elements and textareas */
|
||||||
|
input[type=text], select, textarea{
|
||||||
|
width: 100%;
|
||||||
|
padding: 12px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 4px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Style the label to display next to the inputs */
|
||||||
|
label {
|
||||||
|
padding: 12px 12px 12px 0;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Style the submit button */
|
||||||
|
input[type=submit] {
|
||||||
|
background-color: #4CAF50;
|
||||||
|
color: white;
|
||||||
|
padding: 12px 20px;
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Style the container */
|
||||||
|
.container {
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #f2f2f2;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Floating column for labels: 25% width */
|
||||||
|
.col-25 {
|
||||||
|
float: left;
|
||||||
|
width: 25%;
|
||||||
|
margin-top: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Floating column for inputs: 75% width */
|
||||||
|
.col-75 {
|
||||||
|
float: left;
|
||||||
|
width: 75%;
|
||||||
|
margin-top: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Clear floats after the columns */
|
||||||
|
.row:after {
|
||||||
|
content: "";
|
||||||
|
display: table;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Responsive layout - when the screen is less than 600px wide, make the two columns stack on top of each other instead of next to each other */
|
||||||
|
@media screen and (max-width: 600px) {
|
||||||
|
.col-25, .col-75, input[type=submit] {
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#overlay{
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
z-index: 100;
|
||||||
|
width: 100%;
|
||||||
|
height:100%;
|
||||||
|
display: none;
|
||||||
|
background: rgba(0,0,0,0.6);
|
||||||
|
}
|
||||||
|
.cv-spinner {
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.spinner {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border: 4px #ddd solid;
|
||||||
|
border-top: 4px #2e93e6 solid;
|
||||||
|
border-radius: 50%;
|
||||||
|
animation: sp-anime 0.8s infinite linear;
|
||||||
|
}
|
||||||
|
@keyframes sp-anime {
|
||||||
|
100% {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.is-hide{
|
||||||
|
display:none;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user