Skip to content

Commit 589b9a6

Browse files
authored
Separate core/reusable functionality of widgetbook_golden_test (#27)
* Add core project * Move core elements like properties, builder, play_functions * refactor: Separate core logic from the main library and add new abstractions for easy extension * separate and extract pumping widgetbook use cases and mocking its context * Make MockedWidgetbookCase into stateful widget * Move create_golden_test_test to widgetbook_golden_flutter_test * Update coverage task to consider all project * Add new test cases for the core * Use default test properties for goldenTestZoneRunner * Fix merge addons test and, improve and test error handling of goldenTestZoneRunner * Add script to generate unified coverage * Improve testing of mergeAddons, goldenTestZoneRunner and add new tests for WidgetbookGoldenTestGenerator * Update widgetbook dependencies * Reference core version instead of path * Export main parts of the core in the main library * override dependencies of example project
1 parent 3a174eb commit 589b9a6

47 files changed

Lines changed: 1633 additions & 688 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/code_coverage.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,5 @@ jobs:
3939
uses: codecov/codecov-action@v4
4040
with:
4141
token: ${{ secrets.CODECOV_TOKEN }}
42-
file: ./packages/widgetbook_golden_test/coverage/lcov.info
42+
files: ./packages/widgetbook_golden_test/coverage/lcov.info, ./packages/widgetbook_golden_test_core/coverage/lcov.info
4343
fail_ci_if_error: true
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2025
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

packages/widgetbook_golden_test/example/lib/cases/list_view.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'package:flutter/material.dart';
2-
import 'package:widgetbook_golden_test/widgetbook_golden_test.dart';
32
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
3+
import 'package:widgetbook_golden_test/widgetbook_golden_test.dart';
44

55
@widgetbook.UseCase(name: 'Long list with a button', type: ListView)
66
Widget buildListViewUseCase(BuildContext context) {

packages/widgetbook_golden_test/example/lib/widgetbook.directories.g.dart

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,15 @@ final directories = <_widgetbook.WidgetbookNode>[
4343
_widgetbook.WidgetbookFolder(
4444
name: 'material',
4545
children: [
46-
_widgetbook.WidgetbookLeafComponent(
46+
_widgetbook.WidgetbookComponent(
4747
name: 'PopupMenuButton',
48-
useCase: _widgetbook.WidgetbookUseCase(
49-
name: 'Menu Button',
50-
builder: _example_cases_popup_menu_button.buildPopupMenuButtonUseCase,
51-
),
48+
useCases: [
49+
_widgetbook.WidgetbookUseCase(
50+
name: 'Menu Button',
51+
builder:
52+
_example_cases_popup_menu_button.buildPopupMenuButtonUseCase,
53+
),
54+
],
5255
),
5356
],
5457
),
@@ -82,19 +85,23 @@ final directories = <_widgetbook.WidgetbookNode>[
8285
_widgetbook.WidgetbookFolder(
8386
name: 'widgets',
8487
children: [
85-
_widgetbook.WidgetbookLeafComponent(
88+
_widgetbook.WidgetbookComponent(
8689
name: 'Image',
87-
useCase: _widgetbook.WidgetbookUseCase(
88-
name: 'ResizeCover200x200',
89-
builder: _example_cases_image_cases.buildResizeImageUseCase,
90-
),
90+
useCases: [
91+
_widgetbook.WidgetbookUseCase(
92+
name: 'ResizeCover200x200',
93+
builder: _example_cases_image_cases.buildResizeImageUseCase,
94+
),
95+
],
9196
),
92-
_widgetbook.WidgetbookLeafComponent(
97+
_widgetbook.WidgetbookComponent(
9398
name: 'ListView',
94-
useCase: _widgetbook.WidgetbookUseCase(
95-
name: 'Long list with a button',
96-
builder: _example_cases_list_view.buildListViewUseCase,
97-
),
99+
useCases: [
100+
_widgetbook.WidgetbookUseCase(
101+
name: 'Long list with a button',
102+
builder: _example_cases_list_view.buildListViewUseCase,
103+
),
104+
],
98105
),
99106
_widgetbook.WidgetbookComponent(
100107
name: 'SizedBox',

packages/widgetbook_golden_test/example/pubspec.lock

Lines changed: 20 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,10 @@ packages:
5353
dependency: transitive
5454
description:
5555
name: build
56-
sha256: "6439a9c71a4e6eca8d9490c1b380a25b02675aa688137dfbe66d2062884a23ac"
56+
sha256: "275bf6bb2a00a9852c28d4e0b410da1d833a734d57d39d44f94bfc895a484ec3"
5757
url: "https://pub.dev"
5858
source: hosted
59-
version: "3.0.2"
59+
version: "4.0.4"
6060
build_config:
6161
dependency: transitive
6262
description:
@@ -73,30 +73,14 @@ packages:
7373
url: "https://pub.dev"
7474
source: hosted
7575
version: "4.0.4"
76-
build_resolvers:
77-
dependency: transitive
78-
description:
79-
name: build_resolvers
80-
sha256: "2b21a125d66a86b9511cc3fb6c668c42e9a1185083922bf60e46d483a81a9712"
81-
url: "https://pub.dev"
82-
source: hosted
83-
version: "3.0.2"
8476
build_runner:
8577
dependency: "direct dev"
8678
description:
8779
name: build_runner
88-
sha256: fd3c09f4bbff7fa6e8d8ef688a0b2e8a6384e6483a25af0dac75fef362bcfe6f
89-
url: "https://pub.dev"
90-
source: hosted
91-
version: "2.7.0"
92-
build_runner_core:
93-
dependency: transitive
94-
description:
95-
name: build_runner_core
96-
sha256: ab27e46c8aa233e610cf6084ee6d8a22c6f873a0a9929241d8855b7a72978ae7
80+
sha256: b4d854962a32fd9f8efc0b76f98214790b833af8b2e9b2df6bfc927c0415a072
9781
url: "https://pub.dev"
9882
source: hosted
99-
version: "9.3.0"
83+
version: "2.10.5"
10084
built_collection:
10185
dependency: transitive
10286
description:
@@ -245,14 +229,6 @@ packages:
245229
description: flutter
246230
source: sdk
247231
version: "0.0.0"
248-
frontend_server_client:
249-
dependency: transitive
250-
description:
251-
name: frontend_server_client
252-
sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694
253-
url: "https://pub.dev"
254-
source: hosted
255-
version: "4.0.0"
256232
glob:
257233
dependency: transitive
258234
description:
@@ -510,10 +486,10 @@ packages:
510486
dependency: transitive
511487
description:
512488
name: source_gen
513-
sha256: "7b19d6ba131c6eb98bfcbf8d56c1a7002eba438af2e7ae6f8398b2b0f4f381e3"
489+
sha256: "1d562a3c1f713904ebbed50d2760217fd8a51ca170ac4b05b0db490699dbac17"
514490
url: "https://pub.dev"
515491
source: hosted
516-
version: "3.1.0"
492+
version: "4.2.0"
517493
source_span:
518494
dependency: transitive
519495
description:
@@ -570,14 +546,6 @@ packages:
570546
url: "https://pub.dev"
571547
source: hosted
572548
version: "0.7.6"
573-
timing:
574-
dependency: transitive
575-
description:
576-
name: timing
577-
sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe"
578-
url: "https://pub.dev"
579-
source: hosted
580-
version: "1.0.2"
581549
typed_data:
582550
dependency: transitive
583551
description:
@@ -726,33 +694,40 @@ packages:
726694
dependency: "direct main"
727695
description:
728696
name: widgetbook
729-
sha256: "2d0e649fd73f092afc373272bf46d12e7637a540baa549562393fecf3a387eeb"
697+
sha256: "0ffadb039b1811870b2f643e1730d419d38435b0e1931cc83f32ecd7e50200e4"
730698
url: "https://pub.dev"
731699
source: hosted
732-
version: "3.16.0"
700+
version: "3.20.2"
733701
widgetbook_annotation:
734702
dependency: "direct main"
735703
description:
736704
name: widgetbook_annotation
737-
sha256: d29eef40efac4beb51f5e9d3bb6dd800db986f7020822b06b60d27f0299dac49
705+
sha256: "55504431b15eedef3c1fc4af2d108ac98b32610b59d4a4e2eea87a8515d17eef"
738706
url: "https://pub.dev"
739707
source: hosted
740-
version: "3.7.0"
708+
version: "3.9.0"
741709
widgetbook_generator:
742710
dependency: "direct dev"
743711
description:
744712
name: widgetbook_generator
745-
sha256: "17556f26f786881aa7346935e1314a95c52dabb99bdee8407b8385f934ea5e69"
713+
sha256: d4fd5989abeac63825746e52e4497b3bac7c59dff3565c261040b07581d22f8e
746714
url: "https://pub.dev"
747715
source: hosted
748-
version: "3.16.0"
716+
version: "3.20.1"
749717
widgetbook_golden_test:
750718
dependency: "direct main"
751719
description:
752720
path: ".."
753721
relative: true
754722
source: path
755-
version: "0.2.1"
723+
version: "0.3.0"
724+
widgetbook_golden_test_core:
725+
dependency: "direct overridden"
726+
description:
727+
path: "../../widgetbook_golden_test_core"
728+
relative: true
729+
source: path
730+
version: "0.0.1"
756731
xml:
757732
dependency: transitive
758733
description:

packages/widgetbook_golden_test/example/pubspec.yaml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ environment:
99
dependencies:
1010
flutter:
1111
sdk: flutter
12-
widgetbook: ^3.16.0
13-
widgetbook_annotation: ^3.7.0
12+
widgetbook: ^3.20.2
13+
widgetbook_annotation: ^3.9.0
1414
flutter_localizations:
1515
sdk: flutter
1616
intl: ^0.20.2
@@ -22,10 +22,16 @@ dev_dependencies:
2222
flutter_test:
2323
sdk: flutter
2424
flutter_lints: ^5.0.0
25-
widgetbook_generator: ^3.9.0
25+
widgetbook_generator: ^3.20.1
2626
build_runner: ^2.4.9
2727

2828

2929
flutter:
3030
uses-material-design: true
3131
generate: true
32+
33+
dependency_overrides:
34+
widgetbook_golden_test:
35+
path: ..
36+
widgetbook_golden_test_core:
37+
path: ../../widgetbook_golden_test_core

0 commit comments

Comments
 (0)