README.md
1## Manifest Fragments 2 3This directory contains the manifest fragments that are required for running 4Fuchsia tests hermetically. Tests start from `minimum.shard.test-cml` and add 5additional capabilities as necessary by providing the 6`additional_manifest_fragments` argument. Some fragments are explained in detail 7below: 8 9### General Purpose Fragments 10 11#### archivist.shard.test-cml 12Runs an `archivist-for-embedding` with custom protocol routing for tests 13that want to intercept events written to a `LogSink` by a component. 14 15#### chromium_test_facet.shard.test-cml 16Runs tests in the `chromium` test realm, which is mostly hermetic but has 17access to specific system services that cannot (currently) be faked. For more 18information, see https://fxbug.dev/91934. This is generally required for all 19Chromium tests not using the 20[`chromium_system_test_facet`](#chromium_system_test_facetshardtest-cml). 21 22#### fonts.shard.test-cml 23For tests that need `fuchsia.fonts.Provider` to provide a basic set of fonts. 24This shard runs an isolated font provider with fonts bundled into the fonts 25package. 26 27#### test_fonts.shard.test-cml 28For tests that need `fuchsia.fonts.Provider` to provide a specific set of fonts 29(beyond that provided by `fonts.shard.test-cml`). This shard requires fonts to 30be provided as a directory. The directory must be named `config-data`, must 31contain the file named `all_font_manifest.json`, and all the font files named 32in it. For details see the [font manifest][fm] in Fuchsia documentation. 33 34[fm]: https://fuchsia.dev/fuchsia-src/development/internationalization/fonts/build?hl=en#:font_collection-outputs 35 36The user of this shard must provide a directory `/pkg/test_fonts`, which must 37contain all the files described above. 38 39Within Chromium, these fonts are usually provided via the target 40`//skia:test_fonts`. 41 42#### mark_vmo_executable.shard.test-cml 43Required by tests that execute JavaScript. Should only be required in a small 44number of tests. 45 46#### minimum.shard.test-cml 47Capabilities required by anything that uses `//base/test` when running in the 48(default) `chromium` test realm. It is the default base fragment for most 49`test()` Components. 50 51The system-wide `config-data` directory capability is routed to tests running in 52the realm so that individual tests may route subdirectories as needed. 53TODO(crbug.com/1360077): Remove this after migrating to the new mechanism. 54 55#### logger.shard.test-cml 56For tests that test logging functionality by providing `fuchsia.logger.Log`. 57 58#### sysmem.shard.test-cml 59For tests that depend on the sysmem service (e.g. to allocate image buffers to 60share with Vulkan and Scenic). 61 62#### system_test_minimum.shard.test-cml 63Capabilities required by anything that uses `//base/test` when running as a 64system test in the `chromium-system` test realm. It is the base fragment for 65`test()` Components that use the 66[`chromium_system_test_facet`](#chromium_system_test_facetshardtest-cml). 67 68Most tests use the [`minimum`](#minimumshardtest-cml) shard. 69 70#### chromium_system_test_facet.shard.test-cml 71Runs tests in the `chromium-system` test realm. This is required for Chromium 72tests that are intended to run against the actual system and its real system 73services. This is required for, for example, performance tests intended to 74measure system performance. Another overlapping use case is tests that need to 75be run in environments without access to the packages containing fake 76implementations of required protocols that other tests use. 77(https://crbug.com/1408597 should make that use case obsolete.) 78 79Most tests should use the 80[`chromium_test_facet`](#chromium_test_facetshardtest-cml). 81 82#### test_ui_stack.shard.test-cml 83For tests that need an isolated UI subsystem, that supports the Flatland 84API set. This allows tests to e.g. run with view-focus unaffected by any 85other tests running concurrently on the device, as well as providing test-only 86functionality such as input-injection support. 87 88#### gfx_test_ui_stack.shard.test-cml 89For tests that need an isolated display subsystem supporting the legacy 90Scenic/GFX APIs. 91 92### WebEngine Fragments 93The following fragments are specific to WebEngine functionality as documented 94documentation at 95https://fuchsia.dev/reference/fidl/fuchsia.web#CreateContextParams and 96https://fuchsia.dev/reference/fidl/fuchsia.web#ContextFeatureFlags. 97Any test-specific exceptions are documented for each file. 98 99#### audio_output.shard.test-cml 100Required by tests that need to enable audio output. 101 102#### platform_video_codecs.shard.test-cml 103Required by tests that need accelerated (e.g., hardware) video codecs. A private 104(semi-isolated) instance of codec_factory is run for tests using this shard in 105support of running on system images that don't run it. 106 107#### network.shard.test-cml 108For tests that need access to network services, including those that access a 109local HTTP server. 110 111#### network.shard.test-cml 112Corresponds to the `NETWORK` flag. Required for enabling network access. Note 113that access to the root SSL certificates is not needed if ContextProvider is 114used to launch the `Context`. The `fuchsia.device.NameProvider` dependency comes 115from fdio. 116 117#### present_view.shard.test-cml 118Services that are needed to render web content in a Scenic view and present it. 119Most services are required per the FIDL documentation. 120 121#### web_instance.shard.test-cml 122Contains services that need to be present when creating a `fuchsia.web.Context`. 123Note that the `fuchsia.scheduler.ProfileProvider` service is only used in tests 124that encounter memory pressure code. 125