| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 define(['dart_sdk', 'async_helper', 'unittest', 'require'], | 5 define(['dart_sdk', 'async_helper', 'minitest', 'unittest', 'require'], |
| 6 function(dart_sdk, async_helper, unittest, require) { | 6 function(dart_sdk, async_helper, minitest, unittest, require) { |
| 7 'use strict'; | 7 'use strict'; |
| 8 | 8 |
| 9 async_helper = async_helper.async_helper; | 9 async_helper = async_helper.async_helper; |
| 10 minitest = minitest.minitest; |
| 10 | 11 |
| 11 dart_sdk._isolate_helper.startRootIsolate(function() {}, []); | 12 dart_sdk._isolate_helper.startRootIsolate(function() {}, []); |
| 12 let html_config = unittest.html_config; | 13 let html_config = unittest.html_config; |
| 13 // Test attributes are a list of strings, or a string for a single | 14 // Test attributes are a list of strings, or a string for a single |
| 14 // attribute. Valid attributes are: | 15 // attribute. Valid attributes are: |
| 15 // | 16 // |
| 16 // 'skip' - don't run the test | 17 // 'skip' - don't run the test |
| 17 // 'fail' - test fails | 18 // 'fail' - test fails |
| 18 // 'timeout' - test times out | 19 // 'timeout' - test times out |
| 19 // 'slow' - use 5s timeout instead of default 2s. | 20 // 'slow' - use 5s timeout instead of default 2s. |
| 20 // 'helper' - not a test, used by other tests. | 21 // 'helper' - not a test, used by other tests. |
| 21 // 'unittest' - run separately as a unittest test. | 22 // 'unittest' - run separately as a unittest test. |
| 22 // | 23 // |
| 23 // Common combinations: | 24 // Common combinations: |
| 24 const fail = 'fail'; | 25 const fail = 'fail'; |
| 25 const skip_fail = ['skip', 'fail']; | 26 const skip_fail = ['skip', 'fail']; |
| 26 const skip_timeout = ['skip', 'timeout']; | 27 const skip_timeout = ['skip', 'timeout']; |
| 27 | 28 |
| 29 // Tests marked with this are still using the deprecated unittest package |
| 30 // because they rely on its support for futures and asynchronous tests, which |
| 31 // expect and minitest do not handle. |
| 32 // TODO(rnystrom): Move all of these away from using the async test API so |
| 33 // they can stop using unittest. |
| 34 const async_unittest = ['unittest', 'skip', 'fail']; |
| 35 |
| 28 // The number of expected unittest errors should be zero but unfortunately | 36 // The number of expected unittest errors should be zero but unfortunately |
| 29 // there are a lot of broken html unittests. | 37 // there are a lot of broken html unittests. |
| 30 let num_expected_unittest_fails = 5; | 38 let num_expected_unittest_fails = 3; |
| 31 let num_expected_unittest_errors = 8; | 39 let num_expected_unittest_errors = 2; |
| 32 | 40 |
| 33 // TODO(jmesserly): separate StrongModeError from other errors. | 41 // TODO(jmesserly): separate StrongModeError from other errors. |
| 34 let all_status = { | 42 let all_status = { |
| 35 'language': { | 43 'language': { |
| 36 'assert_with_type_test_or_cast_test': skip_fail, | 44 'assert_with_type_test_or_cast_test': skip_fail, |
| 37 'assertion_test': skip_fail, | 45 'assertion_test': skip_fail, |
| 38 'async_await_test_none_multi': 'unittest', | 46 'async_await_test_none_multi': 'unittest', |
| 39 'async_await_test_02_multi': 'unittest', | 47 'async_await_test_02_multi': 'unittest', |
| 40 'async_await_test_03_multi': skip_fail, // Flaky on travis (#634) | 48 'async_await_test_03_multi': skip_fail, // Flaky on travis (#634) |
| 41 'async_star_await_pauses_test': skip_fail, | 49 'async_star_await_pauses_test': skip_fail, |
| (...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 399 'streamed_conversion_json_utf8_encode_test': skip_timeout, | 407 'streamed_conversion_json_utf8_encode_test': skip_timeout, |
| 400 'streamed_conversion_utf8_decode_test': skip_timeout, | 408 'streamed_conversion_utf8_decode_test': skip_timeout, |
| 401 'streamed_conversion_utf8_encode_test': skip_timeout, | 409 'streamed_conversion_utf8_encode_test': skip_timeout, |
| 402 'utf85_test': skip_timeout, | 410 'utf85_test': skip_timeout, |
| 403 }, | 411 }, |
| 404 | 412 |
| 405 // TODO(jacobr): enable more of the html tests in unittest once they have | 413 // TODO(jacobr): enable more of the html tests in unittest once they have |
| 406 // more hope of passing. Triage tests that can never run in this test | 414 // more hope of passing. Triage tests that can never run in this test |
| 407 // runner and track them separately. | 415 // runner and track them separately. |
| 408 'lib/html': { | 416 'lib/html': { |
| 409 'async_spawnuri_test': ['unittest', 'skip', 'fail'], | 417 'async_spawnuri_test': async_unittest, |
| 410 'async_test': ['unittest', 'skip', 'fail'], | 418 'async_test': async_unittest, |
| 411 'audiobuffersourcenode_test': ['unittest', 'skip', 'fail'], | 419 'audiobuffersourcenode_test': 'fail', // sdk#27578. |
| 412 'audiocontext_test': ['unittest', 'skip', 'fail'], | 420 'audiocontext_test': 'fail', // sdk#27578. |
| 413 'audioelement_test': ['unittest', 'skip', 'fail'], | 421 'blob_constructor_test': 'fail', // sdk#27578. |
| 414 'b_element_test': ['unittest', 'skip', 'fail'], | 422 'cache_test': 'fail', // sdk#27578. |
| 415 'blob_constructor_test': ['unittest', 'skip', 'fail'], | 423 'canvas_test': ['unittest'], |
| 416 'cache_test': ['unittest', 'skip', 'fail'], | |
| 417 'callbacks_test': ['unittest', 'skip', 'fail'], | |
| 418 'canvas_pixel_array_type_alias_test': ['unittest'], | |
| 419 'canvasrenderingcontext2d_test': ['unittest'], | 424 'canvasrenderingcontext2d_test': ['unittest'], |
| 420 'canvas_test': ['unittest'], | 425 'cross_domain_iframe_test': async_unittest, |
| 421 'cdata_test': ['unittest', 'skip', 'fail'], | 426 'crypto_test': 'fail', // sdk#27578. |
| 422 'client_rect_test': ['unittest', 'skip', 'fail'], | 427 'cssstyledeclaration_test': async_unittest, |
| 423 'cross_domain_iframe_test': ['unittest', 'skip', 'fail'], | 428 'css_test': async_unittest, |
| 424 'cross_frame_test': ['unittest', 'skip', 'fail'], | 429 |
| 425 'crypto_test': ['unittest', 'skip', 'fail'], | 430 // This is failing with a range error, I'm guessing because it's looking |
| 426 'css_rule_list_test': ['unittest', 'skip', 'fail'], | 431 // for a stylesheet and the page has none. |
| 427 'cssstyledeclaration_test': ['unittest', 'skip', 'fail'], | 432 'css_rule_list_test': 'fail', |
| 428 'css_test': ['unittest', 'skip', 'fail'], | 433 'custom_element_method_clash_test': async_unittest, |
| 429 'custom_element_method_clash_test': ['unittest', 'skip', 'fail'], | 434 'custom_element_name_clash_test': async_unittest, |
| 430 'custom_element_name_clash_test': ['unittest', 'skip', 'fail'], | 435 'custom_elements_23127_test': async_unittest, |
| 431 'custom_elements_23127_test': ['unittest', 'skip', 'fail'], | 436 'custom_elements_test': async_unittest, |
| 432 'custom_elements_test': ['unittest', 'skip', 'fail'], | 437 'datalistelement_test': 'fail', // sdk#27578. |
| 433 'custom_tags_test': ['unittest', 'skip', 'fail'], | 438 'dom_constructors_test': 'fail', // sdk#27578. |
| 434 'dart_object_local_storage_test': ['unittest', 'skip', 'fail'], | 439 'element_animate_test': async_unittest, |
| 435 'datalistelement_test': ['unittest', 'skip', 'fail'], | 440 'element_classes_test': 'fail', // sdk#27579. |
| 436 'documentfragment_test': ['unittest', 'skip', 'fail'], | 441 'element_classes_svg_test': 'fail', // sdk#27579. |
| 437 'document_test': ['unittest'], | 442 |
| 438 'dom_constructors_test': ['unittest', 'skip', 'fail'], | 443 // This fails because we get 150 instead of 10 on line 45. |
| 439 'domparser_test': ['unittest', 'skip', 'fail'], | 444 'element_dimensions_test': 'fail', |
| 440 'element_add_test': ['unittest', 'skip', 'fail'], | 445 |
| 441 'element_animate_test': ['unittest', 'skip', 'fail'], | 446 // Failure: 'Expected 364 to be in the inclusive range [111, 160].'. |
| 442 'element_classes_svg_test': ['unittest', 'skip', 'fail'], | 447 'element_offset_test': 'fail', |
| 443 'element_classes_test': ['unittest', 'skip', 'fail'], | 448 'element_test': async_unittest, |
| 444 'element_constructor_1_test': ['unittest', 'skip', 'fail'], | 449 'element_types_test': 'fail', // sdk#27578. |
| 445 'element_dimensions_test': ['unittest', 'skip', 'fail'], | 450 'event_customevent_test': async_unittest, |
| 446 'element_offset_test': ['unittest', 'skip', 'fail'], | 451 'events_test': async_unittest, |
| 447 'element_test': ['unittest', 'skip', 'fail'], | 452 |
| 448 'element_types_constructors1_test': ['unittest', 'skip', 'fail'], | 453 // Failure: "Failed to execute 'dispatchEvent' on 'EventTarget': parameter |
| 449 'element_types_constructors2_test': ['unittest', 'skip', 'fail'], | 454 // 1 is not of type 'Event'." |
| 450 'element_types_constructors3_test': ['unittest', 'skip', 'fail'], | 455 'event_test': 'fail', |
| 451 'element_types_constructors4_test': ['unittest', 'skip', 'fail'], | 456 'fileapi_test': async_unittest, |
| 452 'element_types_constructors5_test': ['unittest', 'skip', 'fail'], | 457 'filereader_test': async_unittest, |
| 453 'element_types_constructors6_test': ['unittest', 'skip', 'fail'], | 458 'fontface_loaded_test': async_unittest, |
| 454 'element_types_test': ['unittest', 'skip', 'fail'], | 459 |
| 455 'event_customevent_test': ['unittest', 'skip', 'fail'], | 460 // Failed because it's expecting "Ahem" but getting null. Maybe sdk#27579? |
| 456 'events_test': ['unittest', 'skip', 'fail'], | 461 'fontface_test': 'fail', |
| 457 'event_test': ['unittest', 'skip', 'fail'], | 462 'form_data_test': async_unittest, |
| 458 'exceptions_test': ['unittest', 'skip', 'fail'], | 463 'history_test': async_unittest, |
| 459 'fileapi_test': ['unittest', 'skip', 'fail'], | 464 |
| 460 'filereader_test': ['unittest', 'skip', 'fail'], | 465 // Failing because innerHtml should be 'Hello World' but was ''. |
| 461 'filteredelementlist_test': ['unittest', 'skip', 'fail'], | 466 'htmlelement_test': 'fail', |
| 462 'fontface_loaded_test': ['unittest', 'skip', 'fail'], | 467 'indexeddb_1_test': async_unittest, |
| 463 'fontface_test': ['unittest', 'skip', 'fail'], | 468 'indexeddb_2_test': async_unittest, |
| 464 'form_data_test': ['unittest', 'skip', 'fail'], | 469 'indexeddb_3_test': async_unittest, |
| 465 'form_element_test': ['unittest', 'skip', 'fail'], | 470 'indexeddb_4_test': async_unittest, |
| 466 'geolocation_test': ['unittest', 'skip', 'fail'], | 471 'indexeddb_5_test': async_unittest, |
| 467 'hidden_dom_1_test': ['unittest', 'skip', 'fail'], | 472 'input_element_test': 'fail', // sdk#27578. |
| 468 'hidden_dom_2_test': ['unittest', 'skip', 'fail'], | 473 'interactive_test': async_unittest, |
| 469 'history_test': ['unittest', 'skip', 'fail'], | 474 'isolates_test': async_unittest, |
| 470 'htmlcollection_test': ['unittest', 'skip', 'fail'], | 475 |
| 471 'htmlelement_test': ['unittest', 'skip', 'fail'], | 476 // Failing on "identical JS objects should have identical proxies". |
| 472 'htmloptionscollection_test': ['unittest', 'skip', 'fail'], | 477 'js_test': 'fail', |
| 473 'indexeddb_1_test': ['unittest', 'skip', 'fail'], | 478 'js_interop_1_test': async_unittest, |
| 474 'indexeddb_2_test': ['unittest', 'skip', 'fail'], | 479 |
| 475 'indexeddb_3_test': ['unittest', 'skip', 'fail'], | 480 // Failing because accessing "zSomeInvalidName" does not throw. |
| 476 'indexeddb_4_test': ['unittest', 'skip', 'fail'], | 481 'js_typed_interop_test': 'fail', |
| 477 'indexeddb_5_test': ['unittest', 'skip', 'fail'], | 482 |
| 478 'input_element_test': ['unittest', 'skip', 'fail'], | 483 // The "typed literal" test fails because the object does not have "_c". |
| 479 'instance_of_test': ['unittest', 'skip', 'fail'], | 484 'js_util_test': 'fail', |
| 480 'interactive_test': ['unittest', 'skip', 'fail'], | |
| 481 'isolates_test': ['unittest', 'skip', 'fail'], | |
| 482 'js_function_getter_test': 'unittest', | |
| 483 'js_function_getter_trust_types_test': 'unittest', | |
| 484 'js_interop_1_test': 'unittest', | |
| 485 'js_test': 'unittest', | |
| 486 'js_util_test': 'unittest', | |
| 487 'js_typed_interop_anonymous2_exp_test': 'unittest', | |
| 488 'js_typed_interop_anonymous2_test': 'unittest', | |
| 489 'js_typed_interop_anonymous_exp_test': 'unittest', | |
| 490 'js_typed_interop_anonymous_test': 'unittest', | |
| 491 'js_typed_interop_anonymous_unreachable_exp_test': 'unittest', | |
| 492 'js_typed_interop_anonymous_unreachable_test': 'unittest', | |
| 493 'js_typed_interop_default_arg_test': 'unittest', | |
| 494 'js_typed_interop_side_cast_exp_test': 'unittest', | |
| 495 'js_typed_interop_side_cast_test': 'unittest', | |
| 496 'js_typed_interop_test': 'unittest', | |
| 497 'keyboard_event_test': ['unittest', 'skip', 'fail'], | 485 'keyboard_event_test': ['unittest', 'skip', 'fail'], |
| 498 'localstorage_test': ['unittest', 'skip', 'fail'], | 486 'localstorage_test': ['unittest', 'skip', 'fail'], |
| 499 'location_test': ['unittest', 'skip', 'fail'], | 487 'location_test': ['unittest', 'skip', 'fail'], |
| 500 'mediasource_test': ['unittest', 'skip', 'fail'], | 488 'mediasource_test': ['unittest', 'skip', 'fail'], |
| 501 'media_stream_test': ['unittest', 'skip', 'fail'], | 489 'media_stream_test': ['unittest', 'skip', 'fail'], |
| 502 'messageevent_test': ['unittest', 'skip', 'fail'], | 490 'messageevent_test': ['unittest', 'skip', 'fail'], |
| 503 'mirrors_js_typed_interop_test': ['unittest', 'skip', 'fail'], | 491 'mirrors_js_typed_interop_test': ['unittest', 'skip', 'fail'], |
| 504 'mouse_event_test': ['unittest', 'skip', 'fail'], | 492 'mouse_event_test': ['unittest', 'skip', 'fail'], |
| 505 'mutationobserver_test': ['unittest', 'skip', 'fail'], | 493 'mutationobserver_test': ['unittest', 'skip', 'fail'], |
| 506 'native_gc_test': ['unittest', 'skip', 'fail'], | 494 'native_gc_test': ['unittest', 'skip', 'fail'], |
| (...skipping 14 matching lines...) Expand all Loading... |
| 521 'selectelement_test': ['unittest', 'skip', 'fail'], | 509 'selectelement_test': ['unittest', 'skip', 'fail'], |
| 522 'serialized_script_value_test': ['unittest', 'skip', 'fail'], | 510 'serialized_script_value_test': ['unittest', 'skip', 'fail'], |
| 523 'shadow_dom_test': ['unittest', 'skip', 'fail'], | 511 'shadow_dom_test': ['unittest', 'skip', 'fail'], |
| 524 'shadowroot_test': ['unittest', 'skip', 'fail'], | 512 'shadowroot_test': ['unittest', 'skip', 'fail'], |
| 525 'speechrecognition_test': ['unittest', 'skip', 'fail'], | 513 'speechrecognition_test': ['unittest', 'skip', 'fail'], |
| 526 'storage_test': ['unittest', 'skip', 'fail'], | 514 'storage_test': ['unittest', 'skip', 'fail'], |
| 527 'streams_test': ['unittest', 'skip', 'fail'], | 515 'streams_test': ['unittest', 'skip', 'fail'], |
| 528 'svgelement_test': ['unittest', 'skip', 'fail'], | 516 'svgelement_test': ['unittest', 'skip', 'fail'], |
| 529 'svg_test': ['unittest', 'skip', 'fail'], | 517 'svg_test': ['unittest', 'skip', 'fail'], |
| 530 'table_test': ['unittest', 'skip', 'fail'], | 518 'table_test': ['unittest', 'skip', 'fail'], |
| 531 'text_event_test': ['unittest', 'skip', 'fail'], | |
| 532 'touchevent_test': ['unittest', 'skip', 'fail'], | 519 'touchevent_test': ['unittest', 'skip', 'fail'], |
| 533 'track_element_constructor_test': ['unittest', 'skip', 'fail'], | 520 'track_element_constructor_test': ['unittest', 'skip', 'fail'], |
| 534 'transferables_test': ['unittest', 'skip', 'fail'], | 521 'transferables_test': ['unittest', 'skip', 'fail'], |
| 535 'transition_event_test': ['unittest', 'skip', 'fail'], | 522 'transition_event_test': ['unittest', 'skip', 'fail'], |
| 536 'trusted_html_tree_sanitizer_test': ['unittest', 'skip', 'fail'], | 523 'trusted_html_tree_sanitizer_test': ['unittest', 'skip', 'fail'], |
| 537 'typed_arrays_1_test': ['unittest', 'skip', 'fail'], | 524 'typed_arrays_1_test': ['unittest', 'skip', 'fail'], |
| 538 'typed_arrays_2_test': ['unittest', 'skip', 'fail'], | 525 'typed_arrays_2_test': ['unittest', 'skip', 'fail'], |
| 539 'typed_arrays_3_test': ['unittest', 'skip', 'fail'], | 526 'typed_arrays_3_test': ['unittest', 'skip', 'fail'], |
| 540 'typed_arrays_4_test': ['unittest', 'skip', 'fail'], | 527 'typed_arrays_4_test': ['unittest', 'skip', 'fail'], |
| 541 'typed_arrays_5_test': ['unittest', 'skip', 'fail'], | 528 'typed_arrays_5_test': ['unittest', 'skip', 'fail'], |
| (...skipping 15 matching lines...) Expand all Loading... |
| 557 'window_test': ['unittest', 'skip', 'fail'], | 544 'window_test': ['unittest', 'skip', 'fail'], |
| 558 'worker_api_test': ['unittest', 'skip', 'fail'], | 545 'worker_api_test': ['unittest', 'skip', 'fail'], |
| 559 'worker_test': ['unittest', 'skip', 'fail'], | 546 'worker_test': ['unittest', 'skip', 'fail'], |
| 560 'wrapping_collections_test': ['unittest', 'skip', 'fail'], | 547 'wrapping_collections_test': ['unittest', 'skip', 'fail'], |
| 561 'xhr_cross_origin_test': ['unittest', 'skip', 'fail'], | 548 'xhr_cross_origin_test': ['unittest', 'skip', 'fail'], |
| 562 'xhr_test': ['unittest', 'skip', 'fail'], | 549 'xhr_test': ['unittest', 'skip', 'fail'], |
| 563 'xsltprocessor_test': ['unittest', 'skip', 'fail'], | 550 'xsltprocessor_test': ['unittest', 'skip', 'fail'], |
| 564 | 551 |
| 565 'js_typed_interop_default_arg_test_none_multi': ['unittest', 'skip', 'fail
'], | 552 'js_typed_interop_default_arg_test_none_multi': ['unittest', 'skip', 'fail
'], |
| 566 'js_typed_interop_default_arg_test_explicit_argument_multi': ['unittest',
'skip', 'fail'], | 553 'js_typed_interop_default_arg_test_explicit_argument_multi': ['unittest',
'skip', 'fail'], |
| 567 'js_typed_interop_default_arg_test_default_value_multi': ['unittest', 'ski
p', 'fail'] | 554 |
| 555 // Failing when it gets 3 instead of 42. |
| 556 'js_typed_interop_default_arg_test_default_value_multi': 'fail', |
| 568 }, | 557 }, |
| 569 | 558 |
| 570 'lib/html/custom': { | 559 'lib/html/custom': { |
| 571 'attribute_changed_callback_test': ['unittest', 'skip', 'fail'], | 560 'attribute_changed_callback_test': ['unittest', 'skip', 'fail'], |
| 572 'constructor_calls_created_synchronously_test': | 561 'constructor_calls_created_synchronously_test': |
| 573 ['unittest', 'skip', 'fail'], | 562 ['unittest', 'skip', 'fail'], |
| 574 'created_callback_test': ['unittest', 'skip', 'fail'], | 563 'created_callback_test': ['unittest', 'skip', 'fail'], |
| 575 'document_register_basic_test': ['unittest', 'skip', 'fail'], | 564 'document_register_basic_test': ['unittest', 'skip', 'fail'], |
| 576 'document_register_type_extensions_test': ['unittest', 'skip', 'fail'], | 565 'document_register_type_extensions_test': ['unittest', 'skip', 'fail'], |
| 577 'element_upgrade_test': ['unittest', 'skip', 'fail'], | 566 'element_upgrade_test': ['unittest', 'skip', 'fail'], |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 813 throw new Error( | 802 throw new Error( |
| 814 "negative test marked as 'fail' " + | 803 "negative test marked as 'fail' " + |
| 815 "but passed by throwing:\n" + e); | 804 "but passed by throwing:\n" + e); |
| 816 } | 805 } |
| 817 } else { | 806 } else { |
| 818 if (e == null) { | 807 if (e == null) { |
| 819 throw new Error("test marked as 'fail' but passed"); | 808 throw new Error("test marked as 'fail' but passed"); |
| 820 } | 809 } |
| 821 } | 810 } |
| 822 } else { | 811 } else { |
| 823 if (negative) { | 812 try { |
| 824 assert.throws(mainLibrary.main); | 813 if (negative) { |
| 825 } else { | 814 assert.throws(mainLibrary.main); |
| 826 mainLibrary.main(); | 815 } else { |
| 816 mainLibrary.main(); |
| 817 } |
| 818 } finally { |
| 819 minitest.finishTests(); |
| 827 } | 820 } |
| 828 } | 821 } |
| 829 | 822 |
| 830 if (!async_helper.asyncTestStarted) done(); | 823 if (!async_helper.asyncTestStarted) done(); |
| 831 }); | 824 }); |
| 832 } | 825 } |
| 833 } | 826 } |
| 834 | 827 |
| 835 let mochaOnError; | 828 let mochaOnError; |
| 836 // We run these tests in a mocha test wrapper to avoid the confusing failure | 829 // We run these tests in a mocha test wrapper to avoid the confusing failure |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 888 | 881 |
| 889 for (let action of unittest_tests) { | 882 for (let action of unittest_tests) { |
| 890 try { | 883 try { |
| 891 action(); | 884 action(); |
| 892 } catch (e) { | 885 } catch (e) { |
| 893 console.error("Caught error tying to setup test:", e); | 886 console.error("Caught error tying to setup test:", e); |
| 894 } | 887 } |
| 895 } | 888 } |
| 896 }); | 889 }); |
| 897 }); | 890 }); |
| OLD | NEW |