import 'dart:convert'; import 'dart:io'; import 'package:http/http.dart'; import 'package:test/test.dart'; // Manual test: // $ dart bin/server.dart // $ curl -X POST -d '{"by": 1}' -H "Content-Type: application/json" localhost:8080/ void main() { final port = '8080'; final host = 'http://0.0.0.0:$port'; late Process p; group( 'Integration test should', () { setUp(() async { p = await Process.start( 'dart', ['run', 'bin/server.dart'], environment: {'PORT': port}, ); // Wait for server to start and print to stdout. await p.stdout.first; }); tearDown(() => p.kill()); test('Increment', () async { final response = await post(Uri.parse('$host/'), body: '{"by": 1}'); expect(response.statusCode, 200); expect(response.body, '{"value":1}'); }); test('Get', () async { final response = await get(Uri.parse('$host/')); expect(response.statusCode, 200); final resp = json.decode(response.body) as Map; expect(resp.containsKey('value'), true); }); }, onPlatform: { 'windows': [ Skip('Failing on Windows CI'), ] }, ); }