Skip to content
This repository has been archived by the owner on Feb 26, 2024. It is now read-only.

Angular Phonecat test suite using page objects. #273

Open
wants to merge 14 commits into
base: master
Choose a base branch
from

Conversation

avandeursen
Copy link

Revision of the test suite to make use of page objects. The page objects are derived from the state chart shown below.

This design is used in order to make the scenarios more robust and easier to follow, since the Protractor details are hidden in the state objects. Furthermore, the diagram guides the design of the actual scenarios.

Note that the state object methods return promises.

image

See also:

IgorMinar and others added 14 commits June 29, 2015 13:36
- add ngApp directive to bootstrap the app
- add simple template with an expression
- Added static html list with two phones into index.html
- Converted the static html list into dynamic one by:
  - creating PhoneListCtrl controller for the application
  - extracting the data from HTML into a the controller as an in-memory
    dataset
  - converting the static document into a template with the use of
    `[ngRepeat]` [directive] which iterates over the dataset with phones,
    clones the ngRepeat template for each instance and renders it into the
    view
- Added a simple unit test to show off how to write tests and run them
  with Karma (see README.md for instructions)
- Added a search box to demonstrate how:
  - the data-binding works on input fields
  - to use [filter] filter
  - [ngRepeat] automatically shrinks and grows the number of phones in the view
- Added an end-to-end test to:
  - show how end-to-end tests are written and used
  - to prove that the search box and the repeater are correctly wired together
- Add "age" property to the phone model
- Add select box to control phone list order
- Override the default order value in controller
- Add unit and e2e test for this feature

Closes angular#213
- Replaced the in-memory dataset with data loaded from the server (in
  the form of static phone.json file to make this tutorial backend
  agnostic)
  - The json file is loaded using the [$http] service
- Demonstrate the use of [services][service] and [dependency injection][DI]
  - The [$http] is injected into the controller through [dependency injection][DI]

(Added inline annotation - thanks to @guatebus - closes angular#207)
- adding phone image and links to phone pages
- add end2end test that verifies our phone links
- css to style the page just a notch
- Introduce the [$route] service which allows binding URLs for deep-linking with
  views
  - Create PhoneCatCtrl which governs the entire app and contains $route
    configuration
  - Load the ngRoute module
  - Map `/phones' to PhoneListCtrl and partails/phones-list.html
  - Map `/phones/<phone-id>' to PhoneDetailCtrl and partails/phones-detail.html
  - Copy deep linking parameters to root controller `params` property for access
    in sub controllers
  - Replace content of index.html with [ngView] directive

- Create phone list route
  - Preserve existing PhoneListCtrl controller
  - Move existing html from index.html to partials/phone-list.html
- Create phone details route
  - Empty placeholder PhoneDetailsCtrl controller
  - Empty placeholder partials/phane-details.html template
- Fetch data for and render phone detail view
  - PhoneDetailCtrl controller to fetch details json with [$http] for a specific
    phone
  - template for the phone detailed view
- CSS to make the phone details page look "pretty"
- Added custom checkmark filter
- Update phone detail template to use checkmark filter
- Added spec for the filter
In the phone detail view, clicking on a thumbnail image, changes the
main phone image to be the large version of the thumbnail image.

- Define mainImageUrl model variable in the PhoneDetailCtrl and set its
  default value
- Create setImage controller method to change mainImageUrl
- Register ng:click handler for thumb images to use setImage controller
  method
- Add e2e tests for this feature
- Add css to change the mouse cursor when user points at thumnail images
- Replaced [$http] with [$resource]
- Created a custom Phone service that represents the $resource client
The test suite is compatible with Protractor 2.x
@avandeursen
Copy link
Author

Note: To get the existing tests to work I also had to use the fix in #267. This is independent of the use of page/state objects.

See also avandeursen#1 which has both changes merged, and which works out of the box.

@gkalpak gkalpak force-pushed the master branch 3 times, most recently from 71fa5cb to c9eef47 Compare November 15, 2018 14:17
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants