terminus 0.3.0 → 0.4.0

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