terminus 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/README.rdoc +25 -19
  2. data/bin/terminus +1 -1
  3. data/lib/capybara/driver/terminus.rb +28 -17
  4. data/lib/terminus.rb +29 -15
  5. data/lib/terminus/application.rb +5 -11
  6. data/lib/terminus/browser.rb +97 -44
  7. data/lib/terminus/client.rb +43 -0
  8. data/lib/terminus/client/browser.rb +30 -0
  9. data/lib/terminus/client/phantom.js +6 -0
  10. data/lib/terminus/client/phantomjs.rb +20 -0
  11. data/lib/terminus/connector.rb +9 -0
  12. data/lib/terminus/connector/server.rb +142 -0
  13. data/lib/terminus/connector/socket_handler.rb +72 -0
  14. data/lib/terminus/controller.rb +22 -5
  15. data/lib/terminus/host.rb +7 -2
  16. data/lib/terminus/node.rb +11 -5
  17. data/lib/terminus/proxy.rb +35 -1
  18. data/lib/terminus/proxy/driver_body.rb +26 -6
  19. data/lib/terminus/proxy/external.rb +9 -0
  20. data/lib/terminus/proxy/rewrite.rb +4 -2
  21. data/lib/terminus/public/compiled/terminus-min.js +3 -0
  22. data/lib/terminus/public/compiled/terminus.js +5270 -0
  23. data/lib/terminus/public/loader.js +1 -1
  24. data/lib/terminus/public/pathology.js +3174 -0
  25. data/lib/terminus/public/syn/browsers.js +2 -2
  26. data/lib/terminus/public/syn/drag/drag.js +3 -4
  27. data/lib/terminus/public/syn/key.js +130 -111
  28. data/lib/terminus/public/syn/mouse.js +2 -2
  29. data/lib/terminus/public/syn/synthetic.js +45 -34
  30. data/lib/terminus/public/terminus.js +183 -70
  31. data/lib/terminus/server.rb +6 -0
  32. data/lib/terminus/timeouts.rb +4 -2
  33. data/lib/terminus/views/bootstrap.erb +12 -27
  34. data/lib/terminus/views/index.erb +1 -1
  35. data/spec/reports/android.txt +875 -0
  36. data/spec/reports/chrome.txt +137 -8
  37. data/spec/reports/firefox.txt +137 -9
  38. data/spec/reports/opera.txt +142 -13
  39. data/spec/reports/phantomjs.txt +871 -0
  40. data/spec/reports/safari.txt +137 -8
  41. data/spec/spec_helper.rb +19 -17
  42. data/spec/terminus_driver_spec.rb +8 -6
  43. data/spec/terminus_session_spec.rb +4 -4
  44. metadata +209 -117
@@ -13,7 +13,7 @@
13
13
  <h1><a href="javascript:<%= bootstrap %>">Terminus</a></h1>
14
14
 
15
15
  <p><a href="http://terminus.jcoglan.com">Terminus</a><br>
16
- Copyright &copy; 2010&ndash;2011 <a href="http://jcoglan.com">James Coglan</a><br>
16
+ Copyright &copy; 2010&ndash;2012 <a href="http://jcoglan.com">James Coglan</a><br>
17
17
  Released under the MIT license</p>
18
18
 
19
19
  </body>
@@ -0,0 +1,875 @@
1
+
2
+ Capybara::Session
3
+ with non-existant driver
4
+ should raise an error
5
+
6
+ Capybara::Driver::Terminus
7
+ it should behave like driver
8
+ #visit
9
+ should move to another page
10
+ should show the correct URL
11
+ #body
12
+ should return text reponses
13
+ should return the full response html
14
+ #find
15
+ with xpath selector
16
+ should extract node texts
17
+ should extract node attributes
18
+ should extract boolean node attributes
19
+ should allow retrieval of the value
20
+ should allow assignment of field value
21
+ should extract node tag name
22
+ should extract node visibility
23
+ should extract node checked state
24
+ should extract node selected state
25
+ should return document text on /html selector
26
+ it should behave like driver with javascript support
27
+ #find
28
+ should find dynamically changed nodes
29
+ #drag_to
30
+ should drag and drop an object
31
+ #evaluate_script
32
+ should return the value of the executed script
33
+ it should behave like driver with resynchronization support
34
+ #find
35
+ with synchronization turned on
36
+ should wait for all ajax requests to finish
37
+ with resynchronization turned off
38
+ should not wait for ajax requests to finish
39
+ with short synchronization timeout
40
+ should raise an error
41
+ it should behave like driver with header support
42
+ should make headers available through response_headers
43
+ it should behave like driver with status code support
44
+ should make the status code available through status_code
45
+ it should behave like driver with frame support
46
+ #within_frame
47
+ should find the div in frameOne
48
+ should find the div in FrameTwo
49
+ should find the text div in the main window after finding text in frameOne
50
+ should find the text div in the main window after finding text in frameTwo
51
+ it should behave like driver with cookies support
52
+ #reset!
53
+ should set and clean cookies
54
+ it should behave like driver with infinite redirect detection
55
+ should follow 5 redirects
56
+ should not follow more than 5 redirects
57
+
58
+ Capybara::Session
59
+ with terminus driver
60
+ it should behave like session
61
+ should encode complex field names, like array[][value]
62
+ #visit
63
+ should fetch a response from the driver
64
+ #body
65
+ should return the unmodified page body
66
+ #html
67
+ should return the unmodified page body
68
+ #source
69
+ should return the unmodified page source
70
+ #reset_session!
71
+ removes cookies
72
+ resets current host
73
+ resets current path
74
+ resets page body
75
+ it should behave like all
76
+ #all
77
+ should find all elements using the given locator
78
+ should return an empty array when nothing was found
79
+ should accept an XPath instance
80
+ with css selectors
81
+ should find all elements using the given selector
82
+ should find all elements when given a list of selectors
83
+ with xpath selectors
84
+ should find the first element using the given locator
85
+ with css as default selector
86
+ should find the first element using the given locator
87
+ with visible filter
88
+ should only find visible nodes
89
+ should only find invisible nodes
90
+ within a scope
91
+ should find any element using the given locator
92
+ it should behave like first
93
+ #first
94
+ should find the first element using the given locator
95
+ should return nil when nothing was found
96
+ should accept an XPath instance
97
+ with css selectors
98
+ should find the first element using the given selector
99
+ with xpath selectors
100
+ should find the first element using the given locator
101
+ with css as default selector
102
+ should find the first element using the given locator
103
+ with visible filter
104
+ should only find visible nodes if true given
105
+ should include invisible nodes if false given
106
+ with prefer visible elements
107
+ should find invisible elements if no visible element exists
108
+ should prefer visible elements over invisible elements
109
+ should return the first invisible element if no visible elements exist
110
+ find visible links normally
111
+ without prefer visible elements
112
+ should find invisible elements if no visible element exists
113
+ should not prefer visible elements over invisible elements
114
+ within a scope
115
+ should find the first element using the given locator
116
+ it should behave like attach_file
117
+ #attach_file
118
+ with normal form
119
+ should set a file path by id (FAILED - 1)
120
+ should set a file path by label (FAILED - 2)
121
+ with multipart form
122
+ should set a file path by id (FAILED - 3)
123
+ should set a file path by label (FAILED - 4)
124
+ should not break if no file is submitted
125
+ should send content type text/plain when uploading a text file (FAILED - 5)
126
+ should send content type image/jpeg when uploading an image (FAILED - 6)
127
+ should not break when using HTML5 multiple file input (FAILED - 7)
128
+ with a locator that doesn't exist
129
+ should raise an error
130
+ with a path that doesn't exist
131
+ should raise an error
132
+ it should behave like check
133
+ #check
134
+ should check a checkbox by id
135
+ should check a checkbox by label
136
+ 'checked' attribute
137
+ should be true if checked
138
+ should be false if unchecked
139
+ checking
140
+ should not change an already checked checkbox
141
+ should check an unchecked checkbox
142
+ unchecking
143
+ should not change an already unchecked checkbox
144
+ should uncheck a checked checkbox
145
+ with a locator that doesn't exist
146
+ should raise an error
147
+ it should behave like choose
148
+ #choose
149
+ should choose a radio button by id
150
+ should choose a radio button by label
151
+ with a locator that doesn't exist
152
+ should raise an error
153
+ it should behave like click_link_or_button
154
+ #click
155
+ should click on a link
156
+ should click on a button
157
+ should click on a button with no type attribute
158
+ should be aliased as click_on
159
+ with a locator that doesn't exist
160
+ should raise an error
161
+ it should behave like click_button
162
+ #click_button
163
+ should serialize and send valueless buttons that were clicked
164
+ should not send image buttons that were not clicked
165
+ should serialize and send GET forms
166
+ should follow redirects
167
+ should post pack to the same URL when no action given
168
+ should post pack to the same URL when blank action given
169
+ with multiple values with the same name
170
+ should use the latest given value
171
+ with a form that has a relative url as an action
172
+ should post to the correct url
173
+ with a form that has no action specified
174
+ should post to the correct url
175
+ with value given on a submit button
176
+ on a form with HTML5 fields
177
+ should serialise and submit search fields
178
+ should serialise and submit email fields
179
+ should serialise and submit url fields
180
+ should serialise and submit tel fields
181
+ should serialise and submit color fields
182
+ on an HTML4 form
183
+ should serialize and submit text fields
184
+ should escape fields when submitting
185
+ should serialize and submit password fields
186
+ should serialize and submit hidden fields
187
+ should not serialize fields from other forms
188
+ should submit the button that was clicked, but not other buttons
189
+ should serialize radio buttons
190
+ should serialize check boxes
191
+ should serialize text areas
192
+ should serialize select tag with values
193
+ should serialize select tag without values
194
+ should serialize first option for select tag with no selection
195
+ should not serialize a select tag without options
196
+ should not submit disabled fields
197
+ with id given on a submit button
198
+ should submit the associated form
199
+ should work with partial matches
200
+ with title given on a submit button
201
+ should submit the associated form
202
+ should work with partial matches
203
+ with alt given on an image button
204
+ should submit the associated form
205
+ should work with partial matches
206
+ with value given on an image button
207
+ should submit the associated form
208
+ should work with partial matches
209
+ with id given on an image button
210
+ should submit the associated form
211
+ with title given on an image button
212
+ should submit the associated form
213
+ should work with partial matches
214
+ with text given on a button defined by <button> tag
215
+ should submit the associated form
216
+ should work with partial matches
217
+ should prefer exact matches over partial matches
218
+ with id given on a button defined by <button> tag
219
+ should submit the associated form
220
+ should serialize and send GET forms
221
+ with value given on a button defined by <button> tag
222
+ should submit the associated form
223
+ should work with partial matches
224
+ should prefer exact matches over partial matches
225
+ with title given on a button defined by <button> tag
226
+ should submit the associated form
227
+ should work with partial matches
228
+ with a locator that doesn't exist
229
+ should raise an error
230
+ it should behave like click_link
231
+ #click_link
232
+ should follow relative links
233
+ should follow redirects
234
+ should follow redirects
235
+ should add query string to current URL with naked query string
236
+ should do nothing on anchor links
237
+ should do nothing on URL+anchor links for the same page
238
+ should follow link on URL+anchor links for a different page
239
+ raise an error with links with no href
240
+ with id given
241
+ should take user to the linked page
242
+ with text given
243
+ should take user to the linked page
244
+ should accept partial matches
245
+ should prefer exact matches over partial matches
246
+ with title given
247
+ should take user to the linked page
248
+ should accept partial matches
249
+ should prefer exact matches over partial matches
250
+ with alternative text given to a contained image
251
+ should take user to the linked page
252
+ should take user to the linked page
253
+ should prefer exact matches over partial matches
254
+ with a locator that doesn't exist
255
+ should raise an error
256
+ it should behave like fill_in
257
+ #fill_in
258
+ should fill in a text field by id
259
+ should fill in a text field by name
260
+ should fill in a text field by label without for (FAILED - 8)
261
+ should fill in a url field by label without for
262
+ should favour exact label matches over partial matches
263
+ should fill in a textarea by id
264
+ should fill in a textarea by label
265
+ should fill in a textarea by name
266
+ should fill in a password field by id
267
+ should fill in a field with a custom type
268
+ should fill in a field without a type
269
+ should fill in a text field respecting its maxlength attribute
270
+ should fill in a password field by name
271
+ should fill in a password field by label
272
+ should fill in a password field by name
273
+ should prefer exact matches over partial matches
274
+ should throw an exception if a hash containing 'with' is not provided
275
+ with ignore_hidden_fields
276
+ should not find a hidden field
277
+ with a locator that doesn't exist
278
+ should raise an error
279
+ it should behave like find_button
280
+ #find_button
281
+ should find any field
282
+ should raise error if the field doesn't exist
283
+ it should behave like find_field
284
+ #find_field
285
+ should find any field
286
+ should raise error if the field doesn't exist
287
+ should be aliased as 'field_labeled' for webrat compatibility
288
+ it should behave like find_link
289
+ #find_link
290
+ should find any field
291
+ should raise error if the field doesn't exist
292
+ it should behave like find_by_id
293
+ #find_by_id
294
+ should find any element by id
295
+ should raise error if no element with id is found
296
+ it should behave like find
297
+ #find
298
+ should find the first element using the given locator
299
+ should find the first element using the given locator and options
300
+ should raise ElementNotFound with specified fail message if nothing was found
301
+ should raise ElementNotFound with a useful default message if nothing was found
302
+ should accept an XPath instance and respect the order of paths
303
+ the returned node
304
+ should act like a session object
305
+ should scope CSS selectors
306
+ should have a reference to its parent if there is one
307
+ with css selectors
308
+ should find the first element using the given locator
309
+ with id selectors
310
+ should find the first element using the given locator
311
+ with xpath selectors
312
+ should find the first element using the given locator
313
+ with custom selector
314
+ should use the custom selector
315
+ with custom selector with :for option
316
+ should use the selector when it matches the :for option
317
+ with custom selector with failure_message option
318
+ should raise an error with the failure message if the element is not found
319
+ should pass the selector as the second argument
320
+ with css as default selector
321
+ should find the first element using the given locator
322
+ within a scope
323
+ should find the first element using the given locator
324
+ it should behave like has_content
325
+ #has_content?
326
+ should be true if the given content is on the page at least once
327
+ should be true if scoped to an element which has the content
328
+ should be false if scoped to an element which does not have the content
329
+ should ignore tags
330
+ should ignore extra whitespace and newlines
331
+ should be false if the given content is not on the page
332
+ should handle single quotes in the content
333
+ should handle double quotes in the content
334
+ should handle mixed single and double quotes in the content
335
+ #has_no_content?
336
+ should be false if the given content is on the page at least once
337
+ should be false if scoped to an element which has the content
338
+ should be true if scoped to an element which does not have the content
339
+ should ignore tags
340
+ should be true if the given content is not on the page
341
+ should handle single quotes in the content
342
+ should handle double quotes in the content
343
+ should handle mixed single and double quotes in the content
344
+ it should behave like has_css
345
+ #has_css?
346
+ should be true if the given selector is on the page
347
+ should be false if the given selector is not on the page
348
+ should respect scopes
349
+ with between
350
+ should be true if the content occurs within the range given
351
+ should be false if the content occurs more or fewer times than range
352
+ should be false if the content isn't on the page at all
353
+ with count
354
+ should be true if the content is on the page the given number of times
355
+ should be false if the content occurs the given number of times
356
+ should be false if the content isn't on the page at all
357
+ should coerce count to an integer
358
+ with maximum
359
+ should be true when content occurs same or fewer times than given
360
+ should be false when content occurs more times than given
361
+ should be false if the content isn't on the page at all
362
+ should coerce maximum to an integer
363
+ with minimum
364
+ should be true when content occurs same or more times than given
365
+ should be false when content occurs fewer times than given
366
+ should be false if the content isn't on the page at all
367
+ should coerce minimum to an integer
368
+ with text
369
+ should discard all matches where the given string is not contained
370
+ should discard all matches where the given regexp is not matched
371
+ #has_no_css?
372
+ should be false if the given selector is on the page
373
+ should be true if the given selector is not on the page
374
+ should respect scopes
375
+ with between
376
+ should be false if the content occurs within the range given
377
+ should be true if the content occurs more or fewer times than range
378
+ should be true if the content isn't on the page at all
379
+ with count
380
+ should be false if the content is on the page the given number of times
381
+ should be true if the content is on the page the given number of times
382
+ should be true if the content isn't on the page at all
383
+ should coerce count to an integer
384
+ with maximum
385
+ should be false when content occurs same or fewer times than given
386
+ should be true when content occurs more times than given
387
+ should be true if the content isn't on the page at all
388
+ should coerce maximum to an integer
389
+ with minimum
390
+ should be false when content occurs more times than given
391
+ should be true when content occurs fewer times than given
392
+ should be true if the content isn't on the page at all
393
+ should coerce minimum to an integer
394
+ with text
395
+ should discard all matches where the given string is not contained
396
+ should discard all matches where the given regexp is not matched
397
+ it should behave like has_css
398
+ #has_css?
399
+ should be true if the given selector is on the page
400
+ should be false if the given selector is not on the page
401
+ should respect scopes
402
+ with between
403
+ should be true if the content occurs within the range given
404
+ should be false if the content occurs more or fewer times than range
405
+ should be false if the content isn't on the page at all
406
+ with count
407
+ should be true if the content is on the page the given number of times
408
+ should be false if the content occurs the given number of times
409
+ should be false if the content isn't on the page at all
410
+ should coerce count to an integer
411
+ with maximum
412
+ should be true when content occurs same or fewer times than given
413
+ should be false when content occurs more times than given
414
+ should be false if the content isn't on the page at all
415
+ should coerce maximum to an integer
416
+ with minimum
417
+ should be true when content occurs same or more times than given
418
+ should be false when content occurs fewer times than given
419
+ should be false if the content isn't on the page at all
420
+ should coerce minimum to an integer
421
+ with text
422
+ should discard all matches where the given string is not contained
423
+ should discard all matches where the given regexp is not matched
424
+ #has_no_css?
425
+ should be false if the given selector is on the page
426
+ should be true if the given selector is not on the page
427
+ should respect scopes
428
+ with between
429
+ should be false if the content occurs within the range given
430
+ should be true if the content occurs more or fewer times than range
431
+ should be true if the content isn't on the page at all
432
+ with count
433
+ should be false if the content is on the page the given number of times
434
+ should be true if the content is on the page the given number of times
435
+ should be true if the content isn't on the page at all
436
+ should coerce count to an integer
437
+ with maximum
438
+ should be false when content occurs same or fewer times than given
439
+ should be true when content occurs more times than given
440
+ should be true if the content isn't on the page at all
441
+ should coerce maximum to an integer
442
+ with minimum
443
+ should be false when content occurs more times than given
444
+ should be true when content occurs fewer times than given
445
+ should be true if the content isn't on the page at all
446
+ should coerce minimum to an integer
447
+ with text
448
+ should discard all matches where the given string is not contained
449
+ should discard all matches where the given regexp is not matched
450
+ it should behave like has_selector
451
+ #has_selector?
452
+ should be true if the given selector is on the page
453
+ should be false if the given selector is not on the page
454
+ should use default selector
455
+ should respect scopes
456
+ with count
457
+ should be true if the content is on the page the given number of times
458
+ should be false if the content is on the page the given number of times
459
+ should be false if the content isn't on the page at all
460
+ with text
461
+ should discard all matches where the given string is not contained
462
+ should discard all matches where the given regexp is not matched
463
+ #has_no_selector?
464
+ should be false if the given selector is on the page
465
+ should be true if the given selector is not on the page
466
+ should use default selector
467
+ should respect scopes
468
+ with count
469
+ should be false if the content is on the page the given number of times
470
+ should be true if the content is on the page the wrong number of times
471
+ should be true if the content isn't on the page at all
472
+ with text
473
+ should discard all matches where the given string is contained
474
+ should discard all matches where the given regexp is matched
475
+ it should behave like has_xpath
476
+ #has_xpath?
477
+ should be true if the given selector is on the page
478
+ should be false if the given selector is not on the page
479
+ should use xpath even if default selector is CSS
480
+ should respect scopes
481
+ with count
482
+ should be true if the content is on the page the given number of times
483
+ should be false if the content is on the page the given number of times
484
+ should be false if the content isn't on the page at all
485
+ with text
486
+ should discard all matches where the given string is not contained
487
+ should discard all matches where the given regexp is not matched
488
+ #has_no_xpath?
489
+ should be false if the given selector is on the page
490
+ should be true if the given selector is not on the page
491
+ should use xpath even if default selector is CSS
492
+ should respect scopes
493
+ with count
494
+ should be false if the content is on the page the given number of times
495
+ should be true if the content is on the page the wrong number of times
496
+ should be true if the content isn't on the page at all
497
+ with text
498
+ should discard all matches where the given string is contained
499
+ should discard all matches where the given regexp is matched
500
+ it should behave like has_link
501
+ #has_link?
502
+ should be true if the given link is on the page
503
+ should be false if the given link is not on the page
504
+ #has_no_link?
505
+ should be false if the given link is on the page
506
+ should be true if the given link is not on the page
507
+ it should behave like has_button
508
+ #has_button?
509
+ should be true if the given button is on the page
510
+ should be false if the given button is not on the page
511
+ #has_no_button?
512
+ should be true if the given button is on the page
513
+ should be false if the given button is not on the page
514
+ it should behave like has_field
515
+ #has_field
516
+ should be true if the field is on the page
517
+ should be false if the field is not on the page
518
+ with value
519
+ should be true if a field with the given value is on the page
520
+ should be false if the given field is not on the page
521
+ should be true after the field has been filled in with the given value
522
+ should be false after the field has been filled in with a different value
523
+ #has_no_field
524
+ should be false if the field is on the page
525
+ should be true if the field is not on the page
526
+ with value
527
+ should be false if a field with the given value is on the page
528
+ should be true if the given field is not on the page
529
+ should be false after the field has been filled in with the given value
530
+ should be true after the field has been filled in with a different value
531
+ #has_checked_field?
532
+ should be true if a checked field is on the page
533
+ should be false if an unchecked field is on the page
534
+ should be false if no field is on the page
535
+ should be true after an unchecked checkbox is checked
536
+ should be false after a checked checkbox is unchecked
537
+ should be true after an unchecked radio button is chosen
538
+ should be false after another radio button in the group is chosen
539
+ #has_no_checked_field?
540
+ should be false if a checked field is on the page
541
+ should be true if an unchecked field is on the page
542
+ should be true if no field is on the page
543
+ #has_unchecked_field?
544
+ should be false if a checked field is on the page
545
+ should be true if an unchecked field is on the page
546
+ should be false if no field is on the page
547
+ should be false after an unchecked checkbox is checked
548
+ should be true after a checked checkbox is unchecked
549
+ should be false after an unchecked radio button is chosen
550
+ should be true after another radio button in the group is chosen
551
+ #has_no_unchecked_field?
552
+ should be true if a checked field is on the page
553
+ should be false if an unchecked field is on the page
554
+ should be true if no field is on the page
555
+ it should behave like has_select
556
+ #has_select?
557
+ should be true if the field is on the page
558
+ should be false if the field is not on the page
559
+ with selected value
560
+ should be true if a field with the given value is on the page
561
+ should be false if the given field is not on the page
562
+ should be true after the given value is selected
563
+ should be false after a different value is selected
564
+ should be true after the given values are selected
565
+ should be false after one of the values is unselected
566
+ with options
567
+ should be true if a field with the given options is on the page
568
+ should be false if the given field is not on the page
569
+ #has_no_select?
570
+ should be false if the field is on the page
571
+ should be true if the field is not on the page
572
+ with selected value
573
+ should be false if a field with the given value is on the page
574
+ should be true if the given field is not on the page
575
+ should be false after the given value is selected
576
+ should be true after a different value is selected
577
+ should be false after the given values are selected
578
+ should be true after one of the values is unselected
579
+ with options
580
+ should be false if a field with the given options is on the page
581
+ should be true if the given field is not on the page
582
+ it should behave like has_table
583
+ #has_table?
584
+ should be true if the field is on the page
585
+ should be false if the field is not on the page
586
+ with rows
587
+ should be true if a table with the given rows is on the page
588
+ should be true if the given rows are incomplete
589
+ should be false if the given table is not on the page
590
+ should be false if the given rows contain incorrect elements
591
+ should be false if the given rows are incorrectly ordered
592
+ should be false if the only some of the given rows are correct
593
+ should be false if the given rows are out of order
594
+ #has_no_table?
595
+ should be false if the field is on the page
596
+ should be true if the field is not on the page
597
+ with rows
598
+ should be false if a table with the given rows is on the page
599
+ should be false if the given rows are incomplete
600
+ should be true if the given table is not on the page
601
+ should be true if the given rows contain incorrect elements
602
+ should be true if the given rows are incorrectly ordered
603
+ should be true if the only some of the given rows are correct
604
+ should be true if the given rows are out of order
605
+ it should behave like select
606
+ #select
607
+ should return value of the first option
608
+ should return value of the selected option
609
+ should return the value attribute rather than content if present
610
+ should select an option from a select box by id
611
+ should select an option from a select box by label
612
+ should select an option without giving a select box
613
+ should favour exact matches to option labels
614
+ should escape quotes
615
+ should obey from
616
+ show match labels with preceding or trailing whitespace
617
+ with a locator that doesn't exist
618
+ should raise an error
619
+ with an option that doesn't exist
620
+ should raise an error
621
+ with multiple select
622
+ should return an empty value
623
+ should return value of the selected options
624
+ should select one option
625
+ should select multiple options
626
+ should remain selected if already selected
627
+ should return value attribute rather than content if present
628
+ it should behave like text
629
+ #text
630
+ should print the text of the page
631
+ with css as default selector
632
+ should print the text of the page
633
+ it should behave like uncheck
634
+ #uncheck
635
+ should uncheck a checkbox by id
636
+ should uncheck a checkbox by label
637
+ it should behave like unselect
638
+ #unselect
639
+ with multiple select
640
+ should unselect an option from a select box by id
641
+ should unselect an option without a select box
642
+ should unselect an option from a select box by label
643
+ should favour exact matches to option labels
644
+ should escape quotes
645
+ with single select
646
+ should raise an error
647
+ with a locator that doesn't exist
648
+ should raise an error
649
+ with an option that doesn't exist
650
+ should raise an error
651
+ it should behave like within
652
+ #within
653
+ with CSS selector
654
+ should click links in the given scope
655
+ should assert content in the given scope
656
+ should accept additional options
657
+ with XPath selector
658
+ should click links in the given scope
659
+ with the default selector
660
+ should use XPath
661
+ with Node rather than selector
662
+ should click links in the given scope
663
+ with the default selector set to CSS
664
+ should use CSS
665
+ with click_link
666
+ should click links in the given scope
667
+ should raise an error if the scope is not found on the page
668
+ should restore the scope when an error is raised
669
+ with nested scopes
670
+ should respect the inner scope
671
+ should respect the outer scope
672
+ with forms
673
+ should fill in a field and click a button
674
+ #within_fieldset
675
+ should restrict scope to a fieldset given by id
676
+ should restrict scope to a fieldset given by legend
677
+ #within_table
678
+ should restrict scope to a fieldset given by id
679
+ should restrict scope to a fieldset given by legend
680
+ it should behave like current_url
681
+ #current_url
682
+ should return the current url
683
+ #current_path
684
+ should show the correct location
685
+ it should behave like current_host
686
+ #current_host
687
+ is affected by visiting a page directly
688
+ returns to the app host when visiting a relative url
689
+ is affected by setting Capybara.app_host
690
+ is unaffected by following a relative link
691
+ is affected by following an absolute link
692
+ is unaffected by posting through a relative form
693
+ is affected by posting through an absolute form
694
+ is affected by following a redirect
695
+ it should behave like session with headers support
696
+ #response_headers
697
+ should return response headers
698
+ it should behave like session with javascript support
699
+ all JS specs
700
+ Node#drag_to
701
+ should drag and drop an object
702
+ Node#reload
703
+ without automatic reload
704
+ should reload the current context of the node
705
+ should reload a parent node
706
+ should not automatically reload
707
+ with automatic reload
708
+ should reload the current context of the node automatically
709
+ should reload a parent node automatically
710
+ should reload a node automatically when using find
711
+ #find
712
+ should allow triggering of custom JS events
713
+ #body
714
+ should return the current state of the page
715
+ #source
716
+ should return the original, unmodified source of the page
717
+ #evaluate_script
718
+ should evaluate the given script and return whatever it produces
719
+ #execute_script
720
+ should execute the given script and return nothing
721
+ #find
722
+ should wait for asynchronous load
723
+ with frozen time
724
+ raises an error suggesting that Capybara is stuck in time
725
+ #wait_until
726
+ should wait for block to return true
727
+ should raise Capybara::TimeoutError if block doesn't return true within timeout
728
+ should accept custom timeout in seconds
729
+ should default to Capybara.default_wait_time before timeout
730
+ #click_link_or_button
731
+ should wait for asynchronous load
732
+ #click_link
733
+ should wait for asynchronous load
734
+ #click_button
735
+ should wait for asynchronous load
736
+ #fill_in
737
+ should wait for asynchronous load
738
+ #check
739
+ should trigger associated events
740
+ #has_xpath?
741
+ should wait for content to appear
742
+ #has_no_xpath?
743
+ should wait for content to disappear
744
+ #has_css?
745
+ should wait for content to appear
746
+ #has_no_xpath?
747
+ should wait for content to disappear
748
+ #has_content?
749
+ should wait for content to appear
750
+ #has_no_content?
751
+ should wait for content to disappear
752
+ it should behave like session with status code support
753
+ #status_code
754
+ should return response codes
755
+
756
+ Failures:
757
+
758
+ 1) Capybara::Session with terminus driver it should behave like session it should behave like attach_file#attach_file with normal form should set a file path by id
759
+ Failure/Error: @session.attach_file "form_image", __FILE__
760
+ Capybara::NotSupportedByDriverError:
761
+ Capybara::NotSupportedByDriverError
762
+ Shared Example Group: "attach_file" called from ./vendor/capybara/lib/capybara/spec/session.rb:88
763
+ # ./lib/terminus/node.rb:52:in `set'
764
+ # ./vendor/capybara/lib/capybara/node/element.rb:75:in `set'
765
+ # ./vendor/capybara/lib/capybara/node/base.rb:46:in `wait_until'
766
+ # ./vendor/capybara/lib/capybara/node/element.rb:75:in `set'
767
+ # ./vendor/capybara/lib/capybara/node/actions.rb:158:in `attach_file'
768
+ # (eval):2:in `send'
769
+ # (eval):2:in `attach_file'
770
+ # ./vendor/capybara/lib/capybara/spec/session/attach_file_spec.rb:12
771
+
772
+ 2) Capybara::Session with terminus driver it should behave like session it should behave like attach_file#attach_file with normal form should set a file path by label
773
+ Failure/Error: @session.attach_file "Image", __FILE__
774
+ Capybara::NotSupportedByDriverError:
775
+ Capybara::NotSupportedByDriverError
776
+ Shared Example Group: "attach_file" called from ./vendor/capybara/lib/capybara/spec/session.rb:88
777
+ # ./lib/terminus/node.rb:52:in `set'
778
+ # ./vendor/capybara/lib/capybara/node/element.rb:75:in `set'
779
+ # ./vendor/capybara/lib/capybara/node/base.rb:46:in `wait_until'
780
+ # ./vendor/capybara/lib/capybara/node/element.rb:75:in `set'
781
+ # ./vendor/capybara/lib/capybara/node/actions.rb:158:in `attach_file'
782
+ # (eval):2:in `send'
783
+ # (eval):2:in `attach_file'
784
+ # ./vendor/capybara/lib/capybara/spec/session/attach_file_spec.rb:18
785
+
786
+ 3) Capybara::Session with terminus driver it should behave like session it should behave like attach_file#attach_file with multipart form should set a file path by id
787
+ Failure/Error: @session.attach_file "form_document", @test_file_path
788
+ Capybara::NotSupportedByDriverError:
789
+ Capybara::NotSupportedByDriverError
790
+ Shared Example Group: "attach_file" called from ./vendor/capybara/lib/capybara/spec/session.rb:88
791
+ # ./lib/terminus/node.rb:52:in `set'
792
+ # ./vendor/capybara/lib/capybara/node/element.rb:75:in `set'
793
+ # ./vendor/capybara/lib/capybara/node/base.rb:46:in `wait_until'
794
+ # ./vendor/capybara/lib/capybara/node/element.rb:75:in `set'
795
+ # ./vendor/capybara/lib/capybara/node/actions.rb:158:in `attach_file'
796
+ # (eval):2:in `send'
797
+ # (eval):2:in `attach_file'
798
+ # ./vendor/capybara/lib/capybara/spec/session/attach_file_spec.rb:26
799
+
800
+ 4) Capybara::Session with terminus driver it should behave like session it should behave like attach_file#attach_file with multipart form should set a file path by label
801
+ Failure/Error: @session.attach_file "Document", @test_file_path
802
+ Capybara::NotSupportedByDriverError:
803
+ Capybara::NotSupportedByDriverError
804
+ Shared Example Group: "attach_file" called from ./vendor/capybara/lib/capybara/spec/session.rb:88
805
+ # ./lib/terminus/node.rb:52:in `set'
806
+ # ./vendor/capybara/lib/capybara/node/element.rb:75:in `set'
807
+ # ./vendor/capybara/lib/capybara/node/base.rb:46:in `wait_until'
808
+ # ./vendor/capybara/lib/capybara/node/element.rb:75:in `set'
809
+ # ./vendor/capybara/lib/capybara/node/actions.rb:158:in `attach_file'
810
+ # (eval):2:in `send'
811
+ # (eval):2:in `attach_file'
812
+ # ./vendor/capybara/lib/capybara/spec/session/attach_file_spec.rb:32
813
+
814
+ 5) Capybara::Session with terminus driver it should behave like session it should behave like attach_file#attach_file with multipart form should send content type text/plain when uploading a text file
815
+ Failure/Error: @session.attach_file "Document", @test_file_path
816
+ Capybara::NotSupportedByDriverError:
817
+ Capybara::NotSupportedByDriverError
818
+ Shared Example Group: "attach_file" called from ./vendor/capybara/lib/capybara/spec/session.rb:88
819
+ # ./lib/terminus/node.rb:52:in `set'
820
+ # ./vendor/capybara/lib/capybara/node/element.rb:75:in `set'
821
+ # ./vendor/capybara/lib/capybara/node/base.rb:46:in `wait_until'
822
+ # ./vendor/capybara/lib/capybara/node/element.rb:75:in `set'
823
+ # ./vendor/capybara/lib/capybara/node/actions.rb:158:in `attach_file'
824
+ # (eval):2:in `send'
825
+ # (eval):2:in `attach_file'
826
+ # ./vendor/capybara/lib/capybara/spec/session/attach_file_spec.rb:43
827
+
828
+ 6) Capybara::Session with terminus driver it should behave like session it should behave like attach_file#attach_file with multipart form should send content type image/jpeg when uploading an image
829
+ Failure/Error: @session.attach_file "Document", @test_jpg_file_path
830
+ Capybara::NotSupportedByDriverError:
831
+ Capybara::NotSupportedByDriverError
832
+ Shared Example Group: "attach_file" called from ./vendor/capybara/lib/capybara/spec/session.rb:88
833
+ # ./lib/terminus/node.rb:52:in `set'
834
+ # ./vendor/capybara/lib/capybara/node/element.rb:75:in `set'
835
+ # ./vendor/capybara/lib/capybara/node/base.rb:46:in `wait_until'
836
+ # ./vendor/capybara/lib/capybara/node/element.rb:75:in `set'
837
+ # ./vendor/capybara/lib/capybara/node/actions.rb:158:in `attach_file'
838
+ # (eval):2:in `send'
839
+ # (eval):2:in `attach_file'
840
+ # ./vendor/capybara/lib/capybara/spec/session/attach_file_spec.rb:49
841
+
842
+ 7) Capybara::Session with terminus driver it should behave like session it should behave like attach_file#attach_file with multipart form should not break when using HTML5 multiple file input
843
+ Failure/Error: @session.attach_file "Multiple Documents", @test_file_path
844
+ Capybara::NotSupportedByDriverError:
845
+ Capybara::NotSupportedByDriverError
846
+ Shared Example Group: "attach_file" called from ./vendor/capybara/lib/capybara/spec/session.rb:88
847
+ # ./lib/terminus/node.rb:52:in `set'
848
+ # ./vendor/capybara/lib/capybara/node/element.rb:75:in `set'
849
+ # ./vendor/capybara/lib/capybara/node/base.rb:46:in `wait_until'
850
+ # ./vendor/capybara/lib/capybara/node/element.rb:75:in `set'
851
+ # ./vendor/capybara/lib/capybara/node/actions.rb:158:in `attach_file'
852
+ # (eval):2:in `send'
853
+ # (eval):2:in `attach_file'
854
+ # ./vendor/capybara/lib/capybara/spec/session/attach_file_spec.rb:55
855
+
856
+ 8) Capybara::Session with terminus driver it should behave like session it should behave like fill_in#fill_in should fill in a text field by label without for
857
+ Failure/Error: extract_results(@session)['street'].should == 'Avenue Q'
858
+ expected: "Avenue Q"
859
+ got: "Sesame street 66" (using ==)
860
+ Shared Example Group: "fill_in" called from ./vendor/capybara/lib/capybara/spec/session.rb:94
861
+ # ./vendor/capybara/lib/capybara/spec/session/fill_in_spec.rb:22
862
+
863
+ Finished in 58 minutes 47.99 seconds
864
+ 504 examples, 8 failures
865
+
866
+ Failed examples:
867
+
868
+ rspec ./vendor/capybara/lib/capybara/spec/session/attach_file_spec.rb:11 # Capybara::Session with terminus driver it should behave like session it should behave like attach_file#attach_file with normal form should set a file path by id
869
+ rspec ./vendor/capybara/lib/capybara/spec/session/attach_file_spec.rb:17 # Capybara::Session with terminus driver it should behave like session it should behave like attach_file#attach_file with normal form should set a file path by label
870
+ rspec ./vendor/capybara/lib/capybara/spec/session/attach_file_spec.rb:25 # Capybara::Session with terminus driver it should behave like session it should behave like attach_file#attach_file with multipart form should set a file path by id
871
+ rspec ./vendor/capybara/lib/capybara/spec/session/attach_file_spec.rb:31 # Capybara::Session with terminus driver it should behave like session it should behave like attach_file#attach_file with multipart form should set a file path by label
872
+ rspec ./vendor/capybara/lib/capybara/spec/session/attach_file_spec.rb:42 # Capybara::Session with terminus driver it should behave like session it should behave like attach_file#attach_file with multipart form should send content type text/plain when uploading a text file
873
+ rspec ./vendor/capybara/lib/capybara/spec/session/attach_file_spec.rb:48 # Capybara::Session with terminus driver it should behave like session it should behave like attach_file#attach_file with multipart form should send content type image/jpeg when uploading an image
874
+ rspec ./vendor/capybara/lib/capybara/spec/session/attach_file_spec.rb:54 # Capybara::Session with terminus driver it should behave like session it should behave like attach_file#attach_file with multipart form should not break when using HTML5 multiple file input
875
+ rspec ./vendor/capybara/lib/capybara/spec/session/fill_in_spec.rb:19 # Capybara::Session with terminus driver it should behave like session it should behave like fill_in#fill_in should fill in a text field by label without for