// 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.

/// The name of the route containing the test suite.
const String headingsRoute = 'headings';

/// The string supplied to the [ValueKey] for the app bar title widget.
const String appBarTitleKeyValue = 'Headings#AppBarTitle';

/// The string supplied to the [ValueKey] for the body text widget.
const String bodyTextKeyValue = 'Headings#BodyText';
