Skip to content

Commit

Permalink
Released v-3.1.0 (#118)
Browse files Browse the repository at this point in the history
* Develop (#67)

* Framework refactored.

* Updated config.

* Added funding details.

* Update issue templates

* Issue 55 (#62)

* Added annotation @find and modified login page for new page factory.

* Updated page factory annotation.

* Updated config for headless mode.

* Updated:- Listener to log exceptions correctly.
- Added logging to page factory.

* Updasted dependencies and fixed dependency breaking changes.

* Reverted page factory changes.

* Driver and DriverAction interfaces further modularized.

* Added support for Selenium WebDriver 4.0-alpha 2

* Updating Readme.

* Updated Readme, some work is pending.

* Updated Readme and removed unnecessary comments from test.

* Updated Readme.

* Added iFrame support.

* Updated readme as per suggesstion.

* Updated for getting first frame.

* Released v-2.0.0

* Updated Readme.

* Updated CircleCI config to run analysis on each branch.

* Release for v-2.1.0-Beta (#81)

* Framework refactored.

* Updated config.

* Added funding details.

* Update issue templates

* Issue 55 (#62)

* Added annotation @find and modified login page for new page factory.

* Updated page factory annotation.

* Updated config for headless mode.

* Updated:- Listener to log exceptions correctly.
- Added logging to page factory.

* Updasted dependencies and fixed dependency breaking changes.

* Reverted page factory changes.

* Driver and DriverAction interfaces further modularized.

* Added support for Selenium WebDriver 4.0-alpha 2

* Updating Readme.

* Updated Readme, some work is pending.

* Updated Readme and removed unnecessary comments from test.

* Updated Readme.

* Added iFrame support.

* Updated readme as per suggesstion.

* Updated for getting first frame.

* Fixed #77, added wait strategy concept, default will be NONE.

* Updated BrowserPage for new method implementation.

* Added Safari browser support.

* Added OS condition to fail for non-Mac platforms.

* Updated Readme (#80)

* Released v-2.1.0-beta1.

* Released v-2.1.0

* Prepare for Release of v3.0.0 (#102)

* Framework refactored.

* Updated config.

* Added funding details.

* Update issue templates

* Issue 55 (#62)

* Added annotation @find and modified login page for new page factory.

* Updated page factory annotation.

* Updated config for headless mode.

* Updated:- Listener to log exceptions correctly.
- Added logging to page factory.

* Updasted dependencies and fixed dependency breaking changes.

* Reverted page factory changes.

* Driver and DriverAction interfaces further modularized.

* Added support for Selenium WebDriver 4.0-alpha 2

* Updating Readme.

* Updated Readme, some work is pending.

* Updated Readme and removed unnecessary comments from test.

* Updated Readme.

* Added iFrame support.

* Updated readme as per suggesstion.

* Updated for getting first frame.

* Fixed #77, added wait strategy concept, default will be NONE.

* Updated BrowserPage for new method implementation.

* Added Safari browser support.

* Added OS condition to fail for non-Mac platforms.

* Updated Readme (#80)

* Fixed #87, added isRunning method to IServiceAction interface.

* Fixed #86, added new methods for saveScreenshots.

* Fixed #84 by adding new methods for finding on element with wait strategy. (#92)

* Fixed #85, updated method find and finds. (#94)

* WebDrivermanager version (#95)

* Issue 88 (#96)

* #88: Refactored the code base and many breaking changes done.

* #88: Fixed issue with find and finds method.

* #88: Refactoring done for the find method failure.

* #88: code formatted with Eclipse.

* #13: Added support for BrowserStack. (#97)

* #13: Added support for BrowserStack and SauceLabs. Working for BrowserStack.

* CircleCI config updated with BrowserStack related tests.

* Added talisman ignore file.

* Updated Config util to load settings each time it's called.

* #93 is fixed, added driver specific settings. (#98)

* Readme (#99)

* Updated Readme.

* Updated talisman ignore file.

* Updated readme.

* Run config updated.

* Selenium Grid support. (#101)

* Updated CircleCI config file for Selenium Grid.

* Added coteafs-listener for better CI logs debugging.

* Added attach workspace setting for Grid execution.

* Updated Browser class to run on grid.

* Updated Readme.

* Updated dependency.

* Removed redundand tests.

* Released v3.0.0-beta1

* [ci skip] updated readme code snippet.

* Release v-3.1.0 preparation (#117)

* Framework refactored.

* Updated config.

* Added funding details.

* Update issue templates

* Issue 55 (#62)

* Added annotation @find and modified login page for new page factory.

* Updated page factory annotation.

* Updated config for headless mode.

* Updated:- Listener to log exceptions correctly.
- Added logging to page factory.

* Updasted dependencies and fixed dependency breaking changes.

* Reverted page factory changes.

* Driver and DriverAction interfaces further modularized.

* Added support for Selenium WebDriver 4.0-alpha 2

* Updating Readme.

* Updated Readme, some work is pending.

* Updated Readme and removed unnecessary comments from test.

* Updated Readme.

* Added iFrame support.

* Updated readme as per suggesstion.

* Updated for getting first frame.

* Fixed #77, added wait strategy concept, default will be NONE.

* Updated BrowserPage for new method implementation.

* Added Safari browser support.

* Added OS condition to fail for non-Mac platforms.

* Updated Readme (#80)

* Fixed #87, added isRunning method to IServiceAction interface.

* Fixed #86, added new methods for saveScreenshots.

* Fixed #84 by adding new methods for finding on element with wait strategy. (#92)

* Fixed #85, updated method find and finds. (#94)

* WebDrivermanager version (#95)

* Issue 88 (#96)

* #88: Refactored the code base and many breaking changes done.

* #88: Fixed issue with find and finds method.

* #88: Refactoring done for the find method failure.

* #88: code formatted with Eclipse.

* #13: Added support for BrowserStack. (#97)

* #13: Added support for BrowserStack and SauceLabs. Working for BrowserStack.

* CircleCI config updated with BrowserStack related tests.

* Added talisman ignore file.

* Updated Config util to load settings each time it's called.

* #93 is fixed, added driver specific settings. (#98)

* Readme (#99)

* Updated Readme.

* Updated talisman ignore file.

* Updated readme.

* Run config updated.

* Selenium Grid support. (#101)

* Updated CircleCI config file for Selenium Grid.

* Added coteafs-listener for better CI logs debugging.

* Added attach workspace setting for Grid execution.

* Updated Browser class to run on grid.

* Updated Readme.

* Updated dependency.

* Removed redundand tests.

* Updated Selenium version to latest stable release. (#108)

* Updated outdated coteafs dependencies. (#109)

* Updated outdated dependencies of other coteafs modules. Also corrected code style as per checkstyle reporter.

* Updated talisman config.

* Added new listeners to testng.xml files.

* Updated config paths.

* Updated grid capabilities for latest chrome.

* Issue 100 (#110)

* Fixed #100: Added Element alias.

* Updated logs for Alert and screen resolution.

* Added Session management feature with Parallel support. (#112)

* Added session to manage the Driver within Threads.

* Corrected logging of alerts.

* Updated Page Action base to use current session context.

* Fixed checkstyle issue.

* Fixes #23: Added page transition support to page classes. (#113)

* Fixes #23: Added page transition support to page classes.

* Updated for replacing Logger with Loggy.

* Fixes #107: Added support for video recording. (#114)

* Fixes #107: Added support for video recording.

* Changes done as per review comments.

* Fixed logging issue for alert.

* Fixes #111: Added delay after frame switch and window switch. (#115)

* Integration with ReportPortal changes is in progress. (#116)

* Integration with ReportPortal changes is in progress.

* Updated dependencies to use ReportPortal directly.

* Refactoring done.

* Updated config file.

* Deleted RP config file.

* Updated testng file to remove RP listener..

* Fixed sonar issues.

* Fixed test failure issue.

* Fixed test failure issue for grid and BrowserStack.

* Fixed review comments.

* Updated README for new changes.

* Released v-3.1.0
  • Loading branch information
WasiqB committed Dec 5, 2019
1 parent d93fbed commit e101f14
Show file tree
Hide file tree
Showing 103 changed files with 3,810 additions and 3,977 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,6 @@
/.project
/.idea/
*.iml
.DS_Store
.DS_Store
/video/
/screenshots/
24 changes: 24 additions & 0 deletions .talismanrc
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,28 @@ fileignoreconfig:
ignore_detectors: []
- filename: README.md
checksum: 74c3a77b9495fed2bb3a07ce4987a4e1c3b770424fae8db5c8e67d7676d7c493
ignore_detectors: []
- filename: src/main/java/com/github/wasiqb/coteafs/selenium/config/RemoteSetting.java
checksum: 2f4a2cf1585bfd180da2683ce0942eecd0de56c9b0fe2bf0cbb0303110c5c3eb
ignore_detectors: []
- filename: src/main/java/com/github/wasiqb/coteafs/selenium/core/Browser.java
checksum: 2e8af12fd8145fe506ddf9ea103bf50d8df95021aae044b71596b90e7b1d1aeb
ignore_detectors: []
- filename: src/test/java/com/github/wasiqb/coteafs/selenium/pages/action/LoginPageAction.java
checksum: 786578aeddda9290a9a5eb3428ea4390351f87e2d0eafca1058923288a81f871
ignore_detectors: []
- filename: src/test/resources/selenium-config.yaml
checksum: b3293363ab6b20b55ada0c25797bd1827e3904d2c7e4ef4d94bd8b293feda1ca
ignore_detectors: []
- filename: src/test/resources/selenium-sauce-config.yaml
checksum: 6c141b0be18f5a439ddea042eb94f156af996ca1760e843a3526218ca4d9503a
ignore_detectors: []
- filename: src/test/resources/selenium-bs-config.yaml
checksum: 2890d40eb5587fd295e6c8f83ceaffe8214ea41ff3b64596785b684e0f9f953f
ignore_detectors: []
- filename: src/test/resources/selenium-grid-config.yaml
checksum: a705a7d6de2350861d9d37ae424bd97a89ec358c4ca7d7e108e1ab93d2dd0a5b
ignore_detectors: []
- filename: README.md
checksum: 16f2f4ac5d186f1fc59f4a23f0860b324e9839b2e7d4f108ea8c4fee36a1c517
ignore_detectors: []
33 changes: 21 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ This is a Selenium WebDriver wrapper Framework which enables robust, maintainabl

Some of the key features which this framework offers are as follows:

:point_right: Latest Selenium WebDriver 4.0 (Alpha 2).
:point_right: Latest stable Selenium WebDriver 3.141.59.

:point_right: Minimal learning curve.

Expand All @@ -40,9 +40,11 @@ Some of the key features which this framework offers are as follows:

:point_right: On-demand highlighting of Elements.

:point_right: On-demand video recording.

:point_right: On-demand delay of test execution by allowing predefined delays.

:point_right: On-demand headless mode.
:point_right: On-demand headless mode execution.

:point_right: Inline verification of elements.

Expand All @@ -62,14 +64,14 @@ You can use the following dependency into your `pom.xml` to use this library.
<dependency>
<groupId>com.github.wasiqb.coteafs</groupId>
<artifactId>selenium</artifactId>
<version>3.0.0</version>
<version>3.1.0</version>
</dependency>
```

Or you can add the following into your `build.gradle` file.

```gradle
compile "com.github.wasiqb.coteafs:selenium:3.0.0"
compile "com.github.wasiqb.coteafs:selenium:3.1.0"
```

## :smile: How it is easy to write Tests with this Framework?
Expand Down Expand Up @@ -121,9 +123,15 @@ playback: # Playback settings.
screen_resolution: # Screen resolution settings.
width: 1280 # Screen width.
height: 768 # Screen height.
recording:
enable: true # true, to enable recording, else false.
path: ./video # Video recording path.
prefix: VID # Video file prefix.
delays: # On demand delay settings.
implicit: 60 # Implicit waits in seconds.
explicit: 60 # Explicit waits in seconds.
after_frame_switch: 500 # Delay after iFrame switch in milliseconds.
after_window_switch: 500 # Delay after Window switch in milliseconds.
before_key_press: 0 # delay before key press in milliseconds.
after_key_press: 0 # delay after key press in milliseconds.
before_mouse_move: 0 # delay before mouse move in milliseconds.
Expand All @@ -138,6 +146,7 @@ playback: # Playback settings.
prefix: SCR # screenshot file prefix.
extension: jpeg # screenshot file extension.
capture_on_error: false # screenshot on error.
capture_all: true # always capture screenshot on each event, when true.
```

> **Note:** If you find any config not working, feel free to raise an [issue][].
Expand Down Expand Up @@ -165,19 +174,19 @@ import com.github.wasiqb.coteafs.selenium.core.element.ITextboxActions;

public class LoginPage extends BrowserPage {
public ITextboxActions password () {
return form ().find (By.name ("password"));
return form ().find (By.name ("password"), "Password");
}

public IMouseActions signIn () {
return form ().find (By.name ("btnLogin"));
return form ().find (By.name ("btnLogin"), "Login");
}

public ITextboxActions userId () {
return form ().find (By.name ("uid"));
return form ().find (By.name ("uid"), "User ID");
}

private IMouseActions form () {
return onClickable (By.name ("frmLogin"));
return onClickable (By.name ("frmLogin"), "Form");
}
}
```
Expand Down Expand Up @@ -205,7 +214,7 @@ import com.github.wasiqb.coteafs.selenium.pages.LoginPage;
import com.github.wasiqb.coteafs.selenium.pages.MainPage;

public class LoginPageAction extends AbstractPageAction <LoginPageAction> {
public static final String PASS = "password";
public static final String PASS = "password";
public static final String USER_ID = "userId";

@Override
Expand All @@ -218,8 +227,8 @@ public class LoginPageAction extends AbstractPageAction <LoginPageAction> {
login.signIn ()
.click ();

final MainPage main = new MainPage ();
main.managerIdBanner ()
login.nextPage (MainPage.class)
.managerIdBanner ()
.verifyText ()
.endsWith (format ("Manger Id : {0}", value (USER_ID).toString ()));
}
Expand Down Expand Up @@ -266,7 +275,7 @@ public class SeleniumTest extends BrowserTest {
login.addInputValue (USER_ID, appSetting ().getParams ()
.get ("user"))
.addInputValue (PASS, appSetting ().getParams ()
.get ("password"))
.get ("password"))
.perform ();
}
}
Expand Down
24 changes: 24 additions & 0 deletions checkstyle-suppressions.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suppressions PUBLIC
"-//Puppy Crawl//DTD Suppressions 1.1//EN"
"http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
<suppressions>
<!-- ##### Suppressions for Javadoc in Test classes ##### -->
<suppress checks="JavadocMethod" files="src[/\\]test[/\\]java"/>
<suppress checks="JavadocType" files="src[/\\]test[/\\]java"/>
<!-- Disables 'final' keyword rule on variables and method parameters -->
<suppress checks="FinalLocalVariable" files="src[/\\]test[/\\]java"/>
<suppress checks="FinalParameters" files="src[/\\]test[/\\]java"/>

<!-- ##### Suppressions for generated source files ##### -->
<suppress checks=".*" files="[/\\]target[/\\]" />

<!-- Disables Javadoc requirement for all public methods. This suppression
is not recommended, but may be needed (temporarily) to allow checkstyle
to be applied to existing codebases. -->
<suppress checks="JavadocMethod" files="src[/\\]main[/\\]java"/>

<!-- Disables 'final' keyword rule on variables and method parameters -->
<!-- <suppress checks="FinalLocalVariable" files="src[/\\]main[/\\]java"/>
<suppress checks="FinalParameters" files="src[/\\]main[/\\]java"/> -->
</suppressions>
170 changes: 170 additions & 0 deletions checkstyle.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://checkstyle.sourceforge.net/dtds/configuration_1_3.dtd">
<!-- The DuraSpace Code Style Requirements defined below are also described
in the README.md file, which can be viewed in this directory or on Github:
https://github.com/duraspace/resources/blob/master/checkstyle/README.md For
more information on specific CheckStyle configurations, see: http://checkstyle.sourceforge.net/checks.html -->
<module name="Checker">
<!-- Configure checker to use UTF-8 encoding -->
<property name="charset" value="UTF-8" />
<!-- Configure checker to run on files with these extensions -->
<property name="fileExtensions"
value="java, properties, cfg, xml" />

<!-- Enables suppressions, as defined in the file found at `suppressionsLocation`
in the checkstyle plugin configuration -->
<module name="SuppressionFilter">
<property name="file" value="${checkstyle.suppressions.file}" />
</module>

<!-- No tab characters ('\t') allowed in the source code -->
<module name="FileTabCharacter">
<property name="eachLine" value="true" />
<property name="fileExtensions"
value="java, properties, cfg, css, js, xml" />
</module>

<!-- No Trailing Whitespace, except on lines that only have an asterisk
(e.g. Javadoc comments) -->
<module name="RegexpSingleline">
<property name="format" value="(?&lt;!\*)\s+$|\*\s\s+$" />
<property name="message" value="Line has trailing whitespace" />
<property name="fileExtensions"
value="java, properties, cfg, css, js, xml" />
</module>

<!-- Allow individual lines of code to be excluded from these rules, if
they are annotated with @SuppressWarnings. See also SuppressWarningsHolder
below -->
<module name="SuppressWarningsFilter" />

<!-- Check individual Java source files for specific rules -->
<!-- Maximum line length is 120 characters -->
<module name="LineLength">
<property name="max" value="120" />
<!-- Make exceptions for package names, imports, URLs, JavaDoc {@link}
tags, and very long method names -->
<property name="ignorePattern"
value="^package.*|^import.*|http://|https://|@link|[ ]*\.?\S*" />
</module>

<module name="TreeWalker">
<!-- Highlight any TODO or FIXME comments in info messages -->
<module name="TodoComment">
<property name="severity" value="info" />
<property name="format" value="(TODO)|(FIXME)" />
</module>

<!-- Do not report errors on any lines annotated with @SuppressWarnings -->
<module name="SuppressWarningsHolder" />

<!-- Check that local variables that never have their values changed are
declared final. -->
<!-- Rationale: Changing the value of parameters during the execution of
the method's algorithm can be confusing and should be avoided. -->
<module name="FinalLocalVariable" />

<!-- Check that parameters for methods, constructors, and catch blocks
are final. -->
<module name="FinalParameters" />

<!-- ##### Import statement requirements ##### -->
<!-- Star imports (e.g. import java.util.*) are NOT ALLOWED -->
<module name="AvoidStarImport" />

<!-- Redundant import statements are NOT ALLOWED -->
<module name="RedundantImport" />
<!-- Unused import statements are NOT ALLOWED -->
<module name="UnusedImports" />
<!-- Ensure imports appear alphabetically and grouped -->
<module name="CustomImportOrder">
<property name="sortImportsInGroupAlphabetically"
value="true" />
<property name="separateLineBetweenGroups" value="true" />
<property name="customImportOrderRules"
value="STATIC###STANDARD_JAVA_PACKAGE###THIRD_PARTY_PACKAGE" />
</module>

<!-- ##### Javadocs requirements ##### -->
<!-- Requirements for Javadocs for classes/interfaces -->
<module name="JavadocType">
<!-- All public classes/interfaces MUST HAVE Javadocs -->
<property name="scope" value="public" />
<!-- Add an exception for anonymous inner classes -->
<property name="excludeScope" value="anoninner" />
<!-- Ignore errors related to unknown tags -->
<property name="allowUnknownTags" value="true" />
<!-- Allow params tags to be optional -->
<property name="allowMissingParamTags" value="false" />
</module>
<!-- Requirements for Javadocs for methods -->
<module name="JavadocMethod">
<!-- All public methods MUST HAVE Javadocs -->
<property name="scope" value="public" />
<!-- Allow RuntimeExceptions to be undeclared -->
<property name="allowUndeclaredRTE" value="true" />
<!-- Allow params, throws and return tags to be optional -->
<property name="allowMissingParamTags" value="true" />
<property name="allowMissingThrowsTags" value="true" />
<property name="allowMissingReturnTag" value="true" />
</module>

<!-- ##### Requirements for K&R Style braces ##### -->
<!-- Code blocks MUST HAVE braces, even single line statements (if, while,
etc) -->
<module name="NeedBraces" />
<!-- Left braces should be at the end of current line (default value) -->
<module name="LeftCurly" />
<!-- Right braces should be on start of a new line (default value) -->
<module name="RightCurly" />

<!-- ##### Indentation / Whitespace requirements ##### -->
<!-- Require 4-space indentation (default value) -->
<module name="Indentation" />
<!-- Whitespace should exist around all major tokens -->
<module name="WhitespaceAround">
<!-- However, make an exception for empty constructors, methods, types,
etc. -->
<property name="allowEmptyConstructors" value="true" />
<property name="allowEmptyMethods" value="true" />
<property name="allowEmptyTypes" value="true" />
<property name="allowEmptyLoops" value="true" />
</module>
<!-- Validate whitespace around Generics (angle brackets) per typical conventions
http://checkstyle.sourceforge.net/config_whitespace.html#GenericWhitespace -->
<module name="GenericWhitespace" />

<!-- ##### Blank line requirements ##### -->
<module name="EmptyLineSeparator">
<!-- Allow no more than one empty line -->
<property name="allowMultipleEmptyLines" value="false" />
<property name="allowMultipleEmptyLinesInsideClassMembers"
value="false" />
<!-- Ensures empty lines are used to separate primary code sections -->
<property name="tokens"
value="IMPORT, CLASS_DEF, INTERFACE_DEF, ENUM_DEF,
STATIC_INIT, METHOD_DEF, CTOR_DEF" />
</module>

<!-- ##### Requirements for "switch" statements ##### -->
<!-- "switch" statements MUST have a "default" clause -->
<module name="MissingSwitchDefault" />
<!-- "case" clauses in switch statements MUST include break, return, throw
or continue -->
<module name="FallThrough" />

<!-- ##### Other / Miscellaneous requirements ##### -->
<!-- Require utility classes do not have a public constructor -->
<module name="HideUtilityClassConstructor" />
<!-- Require each variable declaration is its own statement on its own
line -->
<module name="MultipleVariableDeclarations" />
<!-- Each line of code can only include one statement -->
<module name="OneStatementPerLine" />
<!-- Require that "catch" statements are not empty (must at least contain
a comment) -->
<module name="EmptyCatchBlock" />
</module>
</module>
Loading

0 comments on commit e101f14

Please sign in to comment.