Commit graph

44 commits

Author SHA1 Message Date
Elliott Sprehn
6bb2cd6ee2 Provide browser DSL with location() to expect the iframe URL parts. Also move navigateTo() under the browser DSL. 2010-11-01 15:21:37 -07:00
Andres Ornelas
34909520ae add optional label to dsl with selectors to improve test and output readability
e.g.
Before:
   code:   element('.actions ul li a').click();
   output: element .actions ul li a click
After
   code:   element('.actions ul li a', "'Configuration' link").click();
   output: element 'Configuration' link ( .actions ul li a ) click
2010-10-28 15:21:02 -07:00
Misko Hevery
9c0225512c fixes IE related failures, and form submit event handling in ie 2010-10-26 16:33:59 -07:00
Elliott Sprehn
40d7e66f40 Lots of bug fixes in the scenario runner and a bunch of new features.
- By default the runner now creates multiple output formats as it runs. Nodes are created in the DOM with ids: json, xml, and html.

ex. $('#json').html() => json output of the runner
ex. $('#xml').html() => json output of the runner

$result is also an object tree result.

The permitted formats are html,json,xml,object.

If you don't want certain formats you can select specific ones with the new ng:scenario-output attribute on the script tag.

<script src="angular-scenario.js" ng:scenario-output="xml,json">

- Added element(...).count() that returns the number of matching elements for the selector.

- repeater(...).count() now returns 0 if no elements matched which can be used to check if a repeater is empty.

- Added toBe() matcher that does strict equality with ===

- Implement iit and ddescribe. If iit() is used instead of it() then only that test will run. If ddescribe() is used instead of describe() them only it() statements inside of it will run. Several iit/ddescribe() blocks can be used to run isolated tests.

- Implement new event based model for SpecRunner. You can now listen for events in the runner. This is useful for writing your own UI or connecting a remote process (ex. WebDriver). Event callbacks execute on the Runner instance.

Events, if fired, will always be in the below order. All events always happen
except for Failure and Error events which only happen in error conditions.

Events:
  RunnerBegin
  SpecBegin(spec)
  StepBegin(spec, step)
  StepError(spec, step, error)
  StepFailure(spec, step, error)
  StepEnd(spec, step)
  SpecError(spec, step, error)
  SpecEnd(spec)
  RunnerEnd

- Only allow the browser to repaint every 10 steps. Cuts 700ms off Firefox in benchmark, 200ms off Chrome.

- Bug Fix: Manually navigate anchors on click since trigger wont work in Firefox.
2010-10-26 15:17:57 -07:00
Misko Hevery
05d4971abb fix some of the failing ie tests 2010-10-20 23:17:59 -07:00
Elliott Sprehn
2115db6903 Lots of stability and performance updates and UI polish too.
Polish the Scenario Runner UI to include:
- a scroll pane that steps appear in since the list can be very long
- Collapse successful tests
- Show the line where the DSL statements were when there's an error (Chrome, Firefox)

Also:
- Remove lots angular.bind calls to reduce the amount of stack space used.
- Use setTimeout(...,0) to schedule the next future to let the browser breathe and have it repaint the steps. Also prevents overflowing the stack when an it() creates many futures.
- Run afterEach() handlers even if the it() block fails.
- Make navigateTo() take a function as the second argument so you can compute a URL in the future.
- Add wait() DSL statement to allow interactive debugging of tests.
- Allow custom jQuery selectors with element(...).query(fn) DSL statement.

Known Issues:
- All afterEach() handlers run even if a beforeEach() handler fails. Only after handlers for the same level as the failure and above should run.
2010-10-20 14:38:00 -07:00
Misko Hevery
01c7abab35 Fix browser triggering in scenario to always do native events.
- Also fixed angular.suffix for scenarios
 - refactored click() to browserTrigger()
 - Fixed Rakefile with CSS and jQuery
2010-10-19 15:56:53 -07:00
Elliott Sprehn
e7e894a2e3 Significantly clean up the way the scenario DSL works and implement many more DSL statements.
- "this" always means the current chain scope inside a DSL

- addFutureAction callbacks now take ($window, $document, done)

- $document has a special method elements() that uses the currently selected nodes in the document as defined by using() statements.

- $document.elements() allows placeholder insertion into selectors to make them more readable.
  ex. $document.elements('input[name="$1"]', myVar) will substitute the value of myVar for $1 in the selector. Subsequent arguments are $2 and so on.

- $document.elements() results have a special method trigger(event) which should be used to events. This method implements some hacks to make sure browser UI controls update and the correct angular events fire.

- futures now allow custom formatting. By default any chain that results in a future can use toJson() or fromJson() to convert the future value to and from json. A custom parser can be provided with parsedWith(fn) where fn is a callback(value) that must return the parsed result.

Note: The entire widgets.html UI is now able to be controlled and asserted through DSL statements!!! Victory! :)
2010-10-19 00:45:38 -07:00
Elliott Sprehn
03df6cbddb New Angular Scenario runner and DSL system with redesigned HTML UI.
Uses the Jasmine syntax for tests, ex:

describe('widgets', function() {
  it('should verify that basic widgets work', function(){
    navigateTo('widgets.html');
    input('text.basic').enter('Carlos');
    expect(binding('text.basic')).toEqual('Carlos');
    input('text.basic').enter('Carlos Santana');
    expect(binding('text.basic')).not().toEqual('Carlos Boozer');
    input('text.password').enter('secret');
    expect(binding('text.password')).toEqual('secret');
    expect(binding('text.hidden')).toEqual('hiddenValue');
    expect(binding('gender')).toEqual('male');
    input('gender').select('female');
    expect(binding('gender')).toEqual('female');
  });
});

Note: To create new UI's implement the interface shown in angular.scenario.ui.Html.
2010-10-14 09:47:39 -07:00
Bolek Szewczyk
af030b888e delete unused files (e.g. swfobject and underscore libs) 2010-09-23 12:38:28 +02:00
Misko Hevery
0649009624 Refactored the Browser:
- change from using prototype to inner functions to help with better compression
  - removed watchers (url/cookie) and introduced a poller concept
  - moved the checking of URL and cookie into services which register with poolers
Benefits:
  - Smaller minified file
  - can call $browser.poll() from tests to simulate polling
  - single place where setTimeout needs to be tested
  - More testable $browser
2010-09-22 16:17:44 +02:00
Misko Hevery
cdda664f89 fix up the $location encoding 2010-07-30 10:56:36 -07:00
Misko Hevery
1b768b8443 refactored $location service so that it correctly updates under all conditions 2010-07-29 12:54:13 -07:00
Misko Hevery
2a30a02f01 fix preventDefault for events 2010-07-27 15:54:50 -07:00
Misko Hevery
1f05621509 change all attributes from ng- to ng: prefix 2010-07-02 15:39:57 -07:00
Misko Hevery
105e9443c4 fixed special keywords in chrome such as x.throw must be x["throw"]. 2010-07-02 14:43:17 -07:00
Shyam Seshadri
39312d1fe3 Revert "Revert "removed few key foreach and replaced thime with for loop for performance.""
This reverts commit a29c5e4c7f.
2010-06-02 15:05:34 -07:00
Shyam Seshadri
a29c5e4c7f Revert "removed few key foreach and replaced thime with for loop for performance."
This reverts commit 6143b04384.
2010-06-02 15:04:26 -07:00
Misko Hevery
6143b04384 removed few key foreach and replaced thime with for loop for performance. 2010-05-31 00:58:29 -07:00
Misko Hevery
2e33e89a77 added compiled getterFN for better performance 2010-05-30 19:42:21 -07:00
Misko Hevery
c7d64f6d12 improve error handling with elements 2010-05-30 16:34:59 -07:00
Misko Hevery
0e88e35e5c remove the uneeded call to createScope when evaluating expressions 2010-05-30 15:45:33 -07:00
Misko Hevery
5992e81b2e added rake task to create a single file for scenario runner 2010-05-25 14:23:52 -07:00
Andres Ornelas
2cce1ffc15 fixed collapsed issue 2010-05-25 13:05:23 -07:00
Andres Ornelas
3fab5d9879 added error handling on scenario definition 2010-05-24 15:25:30 -07:00
Andres Ornelas Mesta
f6c67e28c9 happy 2010-05-24 13:54:32 -07:00
Misko Hevery
5215e2095c basic end to end runner 2010-05-20 15:55:41 -07:00
Misko Hevery
5dda723185 improved handling of text fields when formater fails to prevent clobering of field 2010-05-10 20:24:20 -07:00
Misko Hevery
c7913a4b7a added $xhr service with bulk and cache, hooked up $resource 2010-04-29 17:28:33 -07:00
Misko Hevery
fce48eb60a resources now use browser mock 2010-04-27 11:18:08 -07:00
Misko Hevery
fe434307d1 tests work under jquery and without 2010-04-22 17:11:56 -07:00
Misko Hevery
8b29156a2d ie6 now passes 2010-04-21 14:29:05 -07:00
Misko Hevery
22d93e0a3b fixes to enable ie 2010-04-20 18:14:13 -07:00
Misko Hevery
6ea1ac7b05 added $invalidWidget service 2010-04-07 14:13:10 -07:00
Misko Hevery
ee327a1f4f few fixes to make tests pass with jquery 2010-04-06 14:04:08 -07:00
Misko Hevery
2107eafcde added hover service 2010-04-05 20:53:33 -07:00
Misko Hevery
7a4b480206 added ng:switch widget 2010-04-05 11:46:53 -07:00
Misko Hevery
a80a61839a injection is now working 2010-04-03 17:04:36 -07:00
Misko Hevery
35ca4fcb9c radio now works with repeaters 2010-04-02 11:49:48 -07:00
Misko Hevery
d717020911 widgets now work properly 2010-04-02 11:10:36 -07:00
Misko Hevery
85f13d602e work on $location and autobind 2010-04-01 14:10:28 -07:00
Misko Hevery
258ca5f165 moved all uneeded files out, widgets.html works, tests horribly broken 2010-03-26 16:27:18 -07:00
Adam Abrons
9e1f085ba6 datastore scenario failing as expected 2010-03-15 17:05:45 -07:00
Adam Abrons
39c6c5975b get scenarios running again - open Runner.html in a browser to run them 2010-03-15 17:02:54 -07:00