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 @TestOn("vm && mac-os") | 5 @TestOn("vm && windows") |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 | 8 |
9 import 'package:test/test.dart'; | 9 import 'package:test/test.dart'; |
10 import 'package:test/src/runner/browser/safari.dart'; | 10 import 'package:test/src/runner/browser/internet_explorer.dart'; |
11 import 'package:test/src/util/io.dart'; | 11 import 'package:test/src/util/io.dart'; |
12 import 'package:shelf/shelf.dart' as shelf; | 12 import 'package:shelf/shelf.dart' as shelf; |
13 import 'package:shelf/shelf_io.dart' as shelf_io; | 13 import 'package:shelf/shelf_io.dart' as shelf_io; |
14 import 'package:shelf_web_socket/shelf_web_socket.dart'; | 14 import 'package:shelf_web_socket/shelf_web_socket.dart'; |
15 | 15 |
16 import '../../io.dart'; | 16 import '../../io.dart'; |
17 import '../../utils.dart'; | 17 import '../../utils.dart'; |
18 | 18 |
19 void main() { | 19 void main() { |
20 group("running JavaScript", () { | 20 group("running JavaScript", () { |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 }); | 62 }); |
63 | 63 |
64 tearDown(() { | 64 tearDown(() { |
65 if (server != null) server.close(); | 65 if (server != null) server.close(); |
66 | 66 |
67 javaScript = null; | 67 javaScript = null; |
68 server = null; | 68 server = null; |
69 webSockets = null; | 69 webSockets = null; |
70 }); | 70 }); |
71 | 71 |
72 test("starts Safari with the given URL", () { | 72 test("starts IE with the given URL", () { |
73 javaScript = ''' | 73 javaScript = ''' |
74 var webSocket = new WebSocket(window.location.href.replace("http://", "ws://")); | 74 var webSocket = new WebSocket(window.location.href.replace("http://", "ws://")); |
75 webSocket.addEventListener("open", function() { | 75 webSocket.addEventListener("open", function() { |
76 webSocket.send("loaded!"); | 76 webSocket.send("loaded!"); |
77 }); | 77 }); |
78 '''; | 78 '''; |
79 var safari = new Safari(baseUrlForAddress(server.address, server.port)); | 79 var ie = new InternetExplorer( |
| 80 baseUrlForAddress(server.address, server.port)); |
80 | 81 |
81 return webSockets.first.then((webSocket) { | 82 return webSockets.first.then((webSocket) { |
82 return webSocket.first.then( | 83 return webSocket.first.then( |
83 (message) => expect(message, equals("loaded!"))); | 84 (message) => expect(message, equals("loaded!"))); |
84 }).whenComplete(safari.close); | 85 }).whenComplete(ie.close); |
85 }); | |
86 | |
87 test("doesn't preserve state across runs", () { | |
88 javaScript = ''' | |
89 localStorage.setItem("data", "value"); | |
90 | |
91 var webSocket = new WebSocket(window.location.href.replace("http://", "ws://")); | |
92 webSocket.addEventListener("open", function() { | |
93 webSocket.send("done"); | |
94 }); | |
95 '''; | |
96 var safari = new Safari(baseUrlForAddress(server.address, server.port)); | |
97 | |
98 var first = true; | |
99 webSockets.listen(expectAsync((webSocket) { | |
100 if (first) { | |
101 // The first request will set local storage data. We can't kill the | |
102 // old safari and start a new one until we're sure that that has | |
103 // finished. | |
104 webSocket.first.then((_) { | |
105 safari.close(); | |
106 | |
107 javaScript = ''' | |
108 var webSocket = new WebSocket(window.location.href.replace("http://", "ws://")); | |
109 webSocket.addEventListener("open", function() { | |
110 webSocket.send(localStorage.getItem("data")); | |
111 }); | |
112 '''; | |
113 safari = new Safari(baseUrlForAddress(server.address, server.port)); | |
114 first = false; | |
115 }); | |
116 } else { | |
117 // The second request will return the local storage data. This should | |
118 // be null, indicating that no data was saved between runs. | |
119 expect( | |
120 webSocket.first | |
121 .then((message) => expect(message, equals('null'))) | |
122 .whenComplete(safari.close), | |
123 completes); | |
124 } | |
125 }, count: 2)); | |
126 }); | 86 }); |
127 }); | 87 }); |
128 | 88 |
129 test("a process can be killed synchronously after it's started", () { | 89 test("a process can be killed synchronously after it's started", () { |
130 return shelf_io.serve(expectAsync((_) {}, count: 0), 'localhost', 0) | 90 return shelf_io.serve(expectAsync((_) {}, count: 0), 'localhost', 0) |
131 .then((server) { | 91 .then((server) { |
132 var safari = new Safari(baseUrlForAddress(server.address, server.port)); | 92 var ie = new InternetExplorer( |
133 return safari.close().whenComplete(server.close); | 93 baseUrlForAddress(server.address, server.port)); |
| 94 return ie.close().whenComplete(server.close); |
134 }); | 95 }); |
135 }); | 96 }); |
136 | 97 |
137 test("reports an error in onExit", () { | 98 test("reports an error in onExit", () { |
138 var safari = new Safari("http://dart-lang.org", | 99 var ie = new InternetExplorer("http://dart-lang.org", |
139 executable: "_does_not_exist"); | 100 executable: "_does_not_exist"); |
140 expect(safari.onExit, throwsA(isApplicationException(startsWith( | 101 expect(ie.onExit, throwsA(isApplicationException(startsWith( |
141 "Failed to start Safari: $noSuchFileMessage")))); | 102 "Failed to start Internet Explorer: $noSuchFileMessage")))); |
142 }); | 103 }); |
143 } | 104 } |
OLD | NEW |