flutter_build_wasm_test.dart 1.7 KB
Newer Older
1 2 3 4 5 6 7 8
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:io';

import 'package:file_testing/file_testing.dart';
import 'package:flutter_tools/src/base/file_system.dart';
9
import 'package:flutter_tools/src/features.dart';
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

import '../src/common.dart';
import 'test_utils.dart';

void main() {
  late Directory tempDir;
  late String flutterBin;
  late Directory exampleAppDir;

  setUp(() async {
    tempDir = createResolvedTempDirectorySync('flutter_web_wasm_test.');
    flutterBin = fileSystem.path.join(
      getFlutterRoot(),
      'bin',
      'flutter',
    );
    exampleAppDir = tempDir.childDirectory('test_app');

    processManager.runSync(<String>[
      flutterBin,
      'create',
      '--platforms=web',
      'test_app',
    ], workingDirectory: tempDir.path);
  });

  test('building web with --wasm produces expected files', () async {
37 38 39 40 41 42 43 44 45 46 47 48
    final ProcessResult result = processManager.runSync(
      <String>[
        flutterBin,
        'build',
        'web',
        '--wasm',
      ],
      workingDirectory: exampleAppDir.path,
      environment: <String, String>{
        flutterWebWasm.environmentOverride!: 'true'
      },
    );
49
    expect(result, const ProcessResultMatcher());
50 51 52 53

    final Directory appBuildDir = fileSystem.directory(fileSystem.path.join(
      exampleAppDir.path,
      'build',
54
      'web_wasm',
55 56 57 58 59 60
    ));
    for (final String filename in const <String>[
      'flutter.js',
      'flutter_service_worker.js',
      'index.html',
      'main.dart.wasm',
61
      'main.dart.mjs',
62 63 64 65 66 67
      'main.dart.js',
    ]) {
      expect(appBuildDir.childFile(filename), exists);
    }
  });
}