|
3 | 3 | [](https://travis-ci.com/digital-delivery-academy/selenium-pom-framework) |
4 | 4 | [](https://www.codacy.com/gh/digital-delivery-academy/selenium-pom-example?utm_source=github.com&utm_medium=referral&utm_content=digital-delivery-academy/selenium-pom-example&utm_campaign=Badge_Grade) |
5 | 5 |
|
6 | | -This "framework" (don't really like that word) provides an simple, lightweight (and well structured) way to launch, |
7 | | -control and extend (loosely) tests for Selenium/WebDriver in Java. |
| 6 | +This toolkit is really a culmination in 10 years of working with teams building automated UI checks with Selenium. We've found time and again that we refactor or rewrite "frameworks" that wrap the entirity of the Selenium API (to little benefit). On top of this, we see so much brittle code that we wanted to put something out there that people could use and benefit from our experience. As a result, this toolkit provides an simple, lightweight (and well structured) way to launch, control and configure tests for Selenium/WebDriver in Java. It's a curation of all of the little libraries and fixes we've used over the years. So if you're at the start of our automation journey or you're just bored of writing the same "framework" over and over again, you're in the right place. |
8 | 7 |
|
9 | | -It is also a collection of useful libraries to get things going (like getting hold of random data for tests) and a few |
10 | | -utility helpers (NOT wrappers) that can support some more complicated tasks that we find are fairly common. |
| 8 | +You'll find no junk (hopefully) here, but it's a fairly opinionated approach: |
| 9 | +- There's no mass "wrapper" on Selenium - that's dumb |
| 10 | +- There's no Cucumber - Acceptance Test Driven Development is overkill, and we won't help you do it, it's not solving the problem you think it is ;) |
| 11 | +- We suggest using the Page Object Model, it's generally a good idea and we provide a starting point for this |
| 12 | +- We resolve Driver binaries from WebDriverManager (https://github.com/bonigarcia/webdrivermanager) |
| 13 | +- We provide random test data generators from Mockneat (https://github.com/nomemory/mockneat) and UK Gov (https://github.com/dwp/nino-format-validation) as well as some of our own (for dates and stuff) |
| 14 | +- There's an externalised (and overridable) configuration system, based on JSON |
| 15 | +- We handle providing JUnit (we use version 5), Selenium and Hamcrest (for writing good assertions) |
11 | 16 |
|
12 | | -You'll find no junk (hopefully) here, and it's a fairly opinionated approach: |
13 | | -- There's no "wrappers" on Selenium - that's dumb |
14 | | -- There's no Cucumber - Acceptance Test Driven Development is overkill |
15 | | -- We expose BasePageObjects - Page Object Model is generally a good idea |
16 | | -- We resolve Driver binaries from WebDriverManager (because Boni Garcias library is cool) |
| 17 | +Coming soon: |
| 18 | +- SauceLabs and BrowserStack configuration. |
| 19 | +- Published artefacts to Maven Central (so you can get the framework without a GitHub membership). |
| 20 | +- Tutorials for writing tests using our toolkit. |
| 21 | +- Builds for Java 13 and older versions of Java. |
| 22 | +- And lots more marked in the issues list: https://github.com/digital-delivery-academy/selenium-pom-framework/issues |
17 | 23 |
|
18 | | -This boilerplate is entirely scalable. Use it as your base and build what you need. |
| 24 | +It really is a one stop shop for getting up and running with a robust toolkit for building Selenium tests, without the massive investment that many business make in hand rolling their own. |
19 | 25 |
|
20 | | -It's highly unlikely that you need anything more complicated than this. |
21 | | -If you do, then you probably have the scope of what you're trying to check a little wrong. |
| 26 | +All of our code is unit or integration tested. |
| 27 | + |
| 28 | +It's highly unlikely that you need anything more complicated than this. If you do, then you probably have the scope of what you're trying to check a little wrong. |
22 | 29 |
|
23 | 30 | Remember that testing through a browser is brittle, slow and should be at the very top of your automation pyramid. |
24 | 31 |
|
25 | 32 | 5-10% of all of your projects automated tests (if you're building bespoke software) should be here. |
26 | | -If you end up with 500 Selenium tests |
27 | | -then you took a wrong turn. A really wrong turn. Or you're trying to check some COTS product. Good luck to ya. |
| 33 | +If you end up with 500 Selenium tests then it's quite possible that you took a wrong turn. We'd be happy to talk about getting you back on the right path (get in touch: [email protected]). |
28 | 34 |
|
29 | 35 | If you have questions please feel free to contact me ( [email protected]) or if you find issues raise a PR or |
30 | 36 | submit an issue ticket. |
31 | 37 |
|
| 38 | +## Documentation |
| 39 | + |
| 40 | +- A full reference guide is here: https://github.com/digital-delivery-academy/selenium-pom-framework/wiki |
| 41 | +- Technical reference documentation (javadocs) are here: https://digital-delivery-academy.github.io/selenium-pom-framework/javadoc-0.0.4 |
| 42 | + |
32 | 43 | ## Usage |
33 | 44 |
|
34 | 45 | Put this in your POM.xml. |
@@ -89,12 +100,6 @@ An example configuration (`settings.xml`) would be: |
89 | 100 | </servers> |
90 | 101 | </settings> |
91 | 102 | ``` |
| 103 | +## Example tests |
92 | 104 |
|
93 | | -See the Documentation in the Wiki to see how to write a test. |
94 | | - |
95 | | -## Documentation |
96 | | - |
97 | | -Documentation for committers and users is here: https://github.com/digital-delivery-academy/selenium-pom-framework/wiki |
98 | | - |
99 | | -Javadocs (more technical documentation) are published for each version on GitHub pages. The current version is here: |
100 | | -https://digital-delivery-academy.github.io/selenium-pom-framework/javadoc-0.0.4 |
| 105 | +See https://github.com/digital-delivery-academy/selenium-pom-example repository for an example of how to write Selenium tests using the Page Object Model. This repository uses this framework. |
0 commit comments