From bf729d550b9589aa498957d219816e334222858b Mon Sep 17 00:00:00 2001 From: Vojta Jina Date: Tue, 25 Oct 2011 13:23:49 -0700 Subject: [PATCH] feat(docs): Add scenario runner into dev guide And update the link in the tutorial as well... --- docs/content/api/index.ngdoc | 5 +- .../content/guide/dev_guide.e2e-testing.ngdoc | 178 ++++++++++++++++++ docs/content/tutorial/step_03.ngdoc | 5 +- docs/content/tutorial/step_08.ngdoc | 6 +- docs/img/guide/scenario_runner.png | Bin 0 -> 41069 bytes 5 files changed, 184 insertions(+), 10 deletions(-) create mode 100644 docs/content/guide/dev_guide.e2e-testing.ngdoc create mode 100644 docs/img/guide/scenario_runner.png diff --git a/docs/content/api/index.ngdoc b/docs/content/api/index.ngdoc index 2ec86346..f48a2b38 100644 --- a/docs/content/api/index.ngdoc +++ b/docs/content/api/index.ngdoc @@ -24,9 +24,8 @@ ## Angular Testing API * {@link angular.mock Testing Mocks API} - Mock objects for testing -* {@link -https://docs.google.com/document/d/11L8htLKrh6c92foV71ytYpiKkeKpM4_a5-9c3HywfIc/edit?hl=en_US -Angular Scenario Runner} - Automated scenario testing documentation +* {@link guide/dev_guide.e2e-testing Angular Scenario Runner} - Automated scenario testing +documentation ## Angular Utility Functions diff --git a/docs/content/guide/dev_guide.e2e-testing.ngdoc b/docs/content/guide/dev_guide.e2e-testing.ngdoc new file mode 100644 index 00000000..d725e07a --- /dev/null +++ b/docs/content/guide/dev_guide.e2e-testing.ngdoc @@ -0,0 +1,178 @@ +@workInProgress +@ngdoc overview +@name Developer Guide: E2E Testing +@description + +As applications grow in size and complexity, it becomes unrealistic to rely on manual testing to +verify the correctness of new features, catch bugs and notice regressions. + +To solve this problem, we have built an Angular Scenario Runner which simulates user interactions +that will help you verify the health of your Angular application. + +# Overview +You will write scenario tests in JavaScript, which describe how your application should behave, +given a certain interaction in a specific state. A scenario is comprised of one or more it blocks +(you can think of these as the requirements of your application), which in turn are made of +**commands** and **expectations**. Commands tell the Runner to do something with the application +(such as navigate to a page or click on a button), and expectations tell the Runner to assert +something about the state (such as the value of a field or the current URL). If any expectation +fails, the runner marks the `it` as "failed" and continues on to the next one. Scenarios may also +have **beforeEach** and **afterEach** blocks, which will be run before (or after) each `it` block, +regardless of whether they pass or fail. + + + +In addition to the above elements, scenarios may also contain helper functions to avoid duplicating +code in the `it` blocks. + +Here is an example of a simple scenario: +
+describe('Buzz Client', function() {
+it('should filter results', function() {
+  input('user').enter('jacksparrow');
+  element(':button').click();
+  expect(repeater('ul li').count()).toEqual(10);
+  input('filterText').enter('Bees');
+  expect(repeater('ul li').count()).toEqual(1);
+});
+});
+
+This scenario describes the requirements of a Buzz Client, specifically, that it should be able to +filter the stream of the user. It starts by entering a value in the 'user' input field, clicking +the only button on the page, and then it verifies that there are 10 items listed. It then enters +'Bees' in the 'filterText' input field and verifies that the list is reduced to a single item. + +The API section below lists the available commands and expectations for the Runner. + +# API +Source: {@link https://github.com/angular/angular.js/blob/master/src/scenario/dsl.js} + +## pause() +Pauses the execution of the tests until you call `resume()` in the console (or click the resume +link in the Runner UI). + +## sleep(seconds) +Pauses the execution of the tests for the specified number of `seconds`. + +## browser().navigateTo(url) +Loads the `url` into the test frame. + +## browser().navigateTo(url, fn) +Loads the URL returned by `fn` into the testing frame. The given `url` is only used for the test +output. Use this when the destination URL is dynamic (that is, the destination is unknown when you +write the test). + +## browser().reload() +Refreshes the currently loaded page in the test frame. + +## browser().window().href() +Returns the window.location.href of the currently loaded page in the test frame. + +## browser().window().path() +Returns the window.location.pathname of the currently loaded page in the test frame. + +## browser().window().search() +Returns the window.location.search of the currently loaded page in the test frame. + +## browser().window().hash() +Returns the window.location.hash (without `#`) of the currently loaded page in the test frame. + +## browser().location().url() +Returns the {@link api/angular.service.$location $location.url()} of the currently loaded page in +the test frame. + +## browser().location().path() +Returns the {@link api/angular.service.$location $location.path()} of the currently loaded page in +the test frame. + +## browser().location().search() +Returns the {@link api/angular.service.$location $location.search()} of the currently loaded page +in the test frame. + +## browser().location().hash() +Returns the {@link api/angular.service.$location $location.hash()} of the currently loaded page in +the test frame. + +## expect(future).{matcher} +Asserts the value of the given `future` satisfies the `matcher`. All API statements return a +`future` object, which get a `value` assigned after they are executed. Matchers are defined using +`angular.scenario.matcher`, and they use the value of futures to run the expectation. For example: +`expect(browser().location().href()).toEqual('http://www.google.com')` + +## expect(future).not().{matcher} +Asserts the value of the given `future` satisfies the negation of the `matcher`. + +## using(selector, label) +Scopes the next DSL element selection. + +## binding(name) +Returns the value of the first binding matching the given `name`. + +## input(name).enter(value) +Enters the given `value` in the text field with the given `name`. + +## input(name).check() +Checks/unchecks the checkbox with the given `name`. + +## input(name).select(value) +Selects the given `value` in the radio button with the given `name`. + +## input(name).val() +Returns the current value of an input field with the given `name`. + +## repeater(selector, label).count() +Returns the number of rows in the repeater matching the given jQuery `selector`. The `label` is +used for test ouput. + +## repeater(selector, label).row(index) +Returns an array with the bindings in the row at the given `index` in the repeater matching the +given jQuery `selector`. The `label` is used for test output. + +## repeater(selector, label).column(binding) +Returns an array with the values in the column with the given `binding` in the repeater matching +the given jQuery `selector`. The `label` is used for test output. + +## select(name).option(value) +Picks the option with the given `value` on the select with the given `name`. + +## select(name).option(value1, value2...) +Picks the options with the given `values` on the multi select with the given `name`. + +## element(selector, label).count() +Returns the number of elements that match the given jQuery `selector`. The `label` is used for test +output. + +## element(selector, label).click() +Clicks on the element matching the given jQuery `selector`. The `label` is used for test output. + +## element(selector, label).query(fn) +Executes the function `fn(selectedElements, done)`, where selectedElements are the elements that +match the given jQuery `selector` and `done` is a function that is called at the end of the `fn` +function. The `label` is used for test output. + +## element(selector, label).{method}() +Returns the result of calling `method` on the element matching the given jQuery `selector`, where +`method` can be any of the following jQuery methods: `val`, `text`, `html`, `height`, +`innerHeight`, `outerHeight`, `width`, `innerWidth`, `outerWidth`, `position`, `scrollLeft`, +`scrollTop`, `offset`. The `label` is used for test output. + +## element(selector, label).{method}(value) +Executes the `method` passing in `value` on the element matching the given jQuery `selector`, where +`method` can be any of the following jQuery methods: `val`, `text`, `html`, `height`, +`innerHeight`, `outerHeight`, `width`, `innerWidth`, `outerWidth`, `position`, `scrollLeft`, +`scrollTop`, `offset`. The `label` is used for test output. + +## element(selector, label).{method}(key) +Returns the result of calling `method` passing in `key` on the element matching the given jQuery +`selector`, where `method` can be any of the following jQuery methods: `attr`, `prop`, `css`. The +`label` is used for test output. + +## element(selector, label).{method}(key, value) +Executes the `method` passing in `key` and `value` on the element matching the given jQuery +`selector`, where `method` can be any of the following jQuery methods: `attr`, `prop`, `css`. The +`label` is used for test output. + +JavaScript is a dynamically typed language which comes with great power of expression, but it also +come with almost no-help from the compiler. For this reason we feel very strongly that any code +written in JavaScript needs to come with a strong set of tests. We have built many features into +angular which makes testing your angular applications easy. So there is no excuse for not do it. diff --git a/docs/content/tutorial/step_03.ngdoc b/docs/content/tutorial/step_03.ngdoc index 89a1b0cb..9be7380a 100644 --- a/docs/content/tutorial/step_03.ngdoc +++ b/docs/content/tutorial/step_03.ngdoc @@ -99,9 +99,8 @@ describe('PhoneCat App', function() { Even though the syntax of this test looks very much like our controller unit test written with -Jasmine, the end-to-end test uses APIs of {@link -https://docs.google.com/document/d/11L8htLKrh6c92foV71ytYpiKkeKpM4_a5-9c3HywfIc/edit?hl=en&pli=1# -Angular's end-to-end test runner}. +Jasmine, the end-to-end test uses APIs of {@link guide/dev_guide.e2e-testing Angular's end-to-end +test runner}. To run the end-to-end test, open one of the following in a new browser tab: diff --git a/docs/content/tutorial/step_08.ngdoc b/docs/content/tutorial/step_08.ngdoc index ef55885f..7d9c82d7 100644 --- a/docs/content/tutorial/step_08.ngdoc +++ b/docs/content/tutorial/step_08.ngdoc @@ -173,10 +173,8 @@ angular's server}. # Experiments -* Using the {@link -https://docs.google.com/document/d/11L8htLKrh6c92foV71ytYpiKkeKpM4_a5-9c3HywfIc/edit?hl=en&pli=1# -end-to-end test runner API}, write a test that verifies that we display 4 thumbnail images on the -Nexus S details page. +* Using the {@link guide/dev_guide.e2e-testing Angular's end-to-end test runner API}, write a test +that verifies that we display 4 thumbnail images on the Nexus S details page. # Summary diff --git a/docs/img/guide/scenario_runner.png b/docs/img/guide/scenario_runner.png new file mode 100644 index 0000000000000000000000000000000000000000..a39037a0aa38c40c682a03c04b136a15da49947a GIT binary patch literal 41069 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 literal 0 HcmV?d00001