@@ -2,11 +2,12 @@ import 'dart:async';
2
2
import 'dart:io' ;
3
3
import 'package:flutter/material.dart' ;
4
4
import 'package:flutter/widgets.dart' ;
5
+ import 'package:kraken/css.dart' ;
5
6
import 'package:kraken/bridge.dart' ;
6
7
import 'package:kraken/dom.dart' ;
8
+ import 'package:kraken/foundation.dart' ;
7
9
import 'package:kraken/module.dart' ;
8
10
import 'package:kraken/widget.dart' ;
9
- import 'package:kraken/css.dart' ;
10
11
import 'package:ansicolor/ansicolor.dart' ;
11
12
import 'package:path/path.dart' as path;
12
13
import 'bridge/from_native.dart' ;
@@ -20,6 +21,7 @@ import 'package:kraken/foundation.dart';
20
21
// import 'package:kraken_animation_player/kraken_animation_player.dart';
21
22
// import 'package:kraken_video_player/kraken_video_player.dart';
22
23
// import 'package:kraken_webview/kraken_webview.dart';
24
+ import 'local_http_server.dart'
23
25
24
26
String? pass = (AnsiPen()..green())('[TEST PASS]' );
25
27
String ? err = (AnsiPen ()..red ())('[TEST FAILED]' );
@@ -53,11 +55,16 @@ class NativeGestureClient implements GestureClient {
53
55
}
54
56
}
55
57
56
- class MyUriParser extends UriParser {
58
+ // Test for UriParser.
59
+ class IntegrationTestUriParser extends UriParser {
57
60
@override
58
- String resolve (Uri base , Uri relative) {
59
- String uri = super .resolve (base , relative);
60
- return uri;
61
+ Uri resolve (Uri base , Uri relative) {
62
+ if (base .toString ().isEmpty
63
+ && relative.path.startsWith ('assets/' )) {
64
+ return Uri .file (relative.path);
65
+ } else {
66
+ return super .resolve (base , relative);
67
+ }
61
68
}
62
69
}
63
70
@@ -68,6 +75,17 @@ void main() async {
68
75
// KrakenVideoPlayer.initialize();
69
76
// KrakenWebView.initialize();
70
77
// defineKrakenCustomElements();
78
+
79
+ // Local HTTP server.
80
+ var httpServer = LocalHttpServer .getInstance ();
81
+ print ('Local HTTP server started at: ${httpServer .getUri ()}' );
82
+
83
+ String codeInjection = '''
84
+ // This segment inject variables for test environment.
85
+ LOCAL_HTTP_SERVER = '${httpServer .getUri ().toString ()}';
86
+ ''' ;
87
+
88
+
71
89
// Set render font family AlibabaPuHuiTi to resolve rendering difference.
72
90
CSSText .DEFAULT_FONT_FAMILY_FALLBACK = ['AlibabaPuHuiTi' ];
73
91
// setObjectElementFactory(customObjectElementFactory);
@@ -99,21 +117,21 @@ void main() async {
99
117
return 'method: ' + method;
100
118
};
101
119
102
- krakenMap[i] = Kraken (
120
+ var kraken = krakenMap[i] = Kraken (
103
121
viewportWidth: 360 ,
104
122
viewportHeight: 640 ,
105
123
bundleContent: 'console.log("Starting integration tests...")' ,
106
124
disableViewportWidthAssertion: true ,
107
125
disableViewportHeightAssertion: true ,
108
126
javaScriptChannel: javaScriptChannel,
109
- gestureClient: NativeGestureClient (gestureClientID: i),
110
- uriParser: MyUriParser (),
127
+ gestureClient: NativeGestureClient (gestureClientID: i),
128
+ uriParser: IntegrationTestUriParser (),
111
129
);
112
- widgets.add (krakenMap[i] ! );
130
+ widgets.add (kraken );
113
131
}
114
132
115
133
runApp (MaterialApp (
116
- title: 'Kraken Intergration Tests' ,
134
+ title: 'Kraken Integration Tests' ,
117
135
debugShowCheckedModeBanner: false ,
118
136
home: Scaffold (
119
137
appBar: AppBar (
@@ -146,7 +164,7 @@ void main() async {
146
164
for (Map spec in testPayload) {
147
165
String filename = spec['filename' ];
148
166
String code = spec['code' ];
149
- evaluateTestScripts (contextId, code, url: filename);
167
+ evaluateTestScripts (contextId, codeInjection + code, url: filename);
150
168
}
151
169
152
170
testResults.add (executeTest (contextId));
0 commit comments