Commit 2398866
feat: Wizard component — templates, 117 tests, Playwright coverage (FritzAndFriends#554)
* feat(Wizard): Add SSR form navigation and HTML fidelity improvements
- Fix Wizard HTML output to match Web Forms: border='0', height:100%,
nested navigation table with cellspacing/cellpadding
- Change navigation buttons to type='submit' (matching Web Forms)
- Add static SSR form-based navigation: hidden __wizard_step field
persists state across postbacks, __wizard_action field carries button
clicks via named submit buttons
- ProcessPendingNavigation defers until enough steps register
ZavaLoanPortal Build 2026 demo:
- Add /dev/login endpoint for acceptance test authentication
- Use native <form> with @formname for proper SSR form handling
- Set AutoGenerateColumns='false' on GridView (no DB available)
- Add try-catch around DB calls for resilience without SQL Server
- 11 Playwright acceptance tests (navigation, auth, wizard steps)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat: Wizard component, v0.20 prep, and preview publish workflow
- Bump version.json to 0.20.0 for Wizard release
- Add nuget-preview.yml workflow for auto-publish on merge to dev
- Switch ZavaLoanPortal to NuGet package reference (0.20.0-preview.*)
- Add EmptyDataText to ZavaLoanPortal GridView
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* docs(ai-team): wizard-validation session — merge decisions, archive old entries
Session: 2026-05-21T01-19Z-wizard-validation
Requested by: Copilot CLI (Scribe)
Changes:
- Archived 4 decisions older than 7 days to decisions-archive.md
- Merged 22 inbox decisions into decisions.md (22 files deleted)
- Deduplication applied (exact duplicates removed)
- decisions.md reduced from 64,797 → 46,159 bytes
- Orchestration log and session log written
- Beast and Bishop history files summarized and archived
* feat(Wizard): wire templates, add 100+ bUnit tests, Playwright integration tests
- Wire StartNavigationTemplate, StepNavigationTemplate, FinishNavigationTemplate, SideBarTemplate
- Honor FinishCompleteButtonText with FinishButtonText fallback
- Add Callbacks.razor, StepTypes.razor, EdgeCases.razor test files
- Add Wizard smoke test and 4 interactive Playwright tests
- Update Wizard documentation
117 passing tests (6 skipped for unimplemented behaviors)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* docs(ai-team): Wizard samples & tests spawn + decision merge
Session: 2026-05-21T12-26-wizard-samples-tests
Spawned agents: Cyclops (samples), Colossus (tests)
Merged by: Scribe
Changes:
- Merged 3 inbox decisions into decisions.md (wizard finish button precedence, playwright locator scoping, unsupported behaviors QA)
- Updated Cyclops history.md with team update on finish button label precedence
- Updated Colossus history.md with team update on playwright locator scoping decision
- Updated Rogue history.md with team update on QA gap documentation approach
- No decisions archived (all entries post 2026-04-21 cutoff)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat(Wizard): add template demos and acceptance tests
- Add 5 sample demos: FinishCompleteButtonText, SideBarTemplate,
StartNavigationTemplate, StepNavigationTemplate, FinishNavigationTemplate
- Add 5 Playwright acceptance tests for template features
- All demos use data-audit-control Wizard-7 through Wizard-11
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix(Wizard): fix 3 Playwright test failures on CI
- Wizard_FinishCompleteButtonText: was clicking forward twice (past Finish
to Complete step where nav is hidden). Now clicks once to reach Finish.
- Wizard_FinishNavigationTemplate: same issue — stop at Finish step (idx 1)
instead of advancing to Complete (idx 2).
- Wizard_StepNavigationTemplate: add explicit wait for hidden input value
change to handle Blazor Server render latency on CI.
All three tests now use WaitForAsync on the step hidden input to ensure
the component has re-rendered before asserting.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat(Wizard): polish - sidebar HTML fidelity, ARIA, MoveTo/GetHistory, single-step nav hiding
- Sidebar now renders table/tr/td structure matching Web Forms DataList output
- Added ARIA attributes: role='navigation' on sidebar, role='tabpanel' on step content
- Single-step wizard hides navigation buttons (HasNavigationTarget check)
- Added MoveTo(int) API for programmatic step navigation
- Added GetHistory() API exposing navigation history
- WizardStep implements IDisposable for dynamic removal
- Programmatic ActiveStepIndex changes fire OnActiveStepChanged
- 49 passing tests, 0 skipped
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: use ARIA selector for Wizard nav area in Playwright tests
The td[align='right'].Last selector was ambiguous after the sidebar
table structure change — nested button tds also match. Use the
td[role='navigation'][aria-label='Wizard navigation'] selector instead
which precisely targets the navigation container.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: add InteractiveServer rendermode to Wizard sample + PR test summaries
- Wizard sample page was missing @rendermode InteractiveServer, causing
@OnClick handlers to be inert under static SSR (root cause of 3 CI
Playwright timeouts)
- Add EnricoMi/publish-unit-test-result-action to both build.yml and
integration-tests.yml so test results are posted as PR comments
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: make Wizard SSR-compatible with form-based navigation
- Wrap Wizard in <form method='post' @formname @onsubmit> for static SSR
- Navigation buttons submit the form; HandleFormSubmit reads the action
from form data and dispatches to the appropriate handler
- Hidden field __wizard_step carries current step index across POSTs
- Sidebar links changed from <a @OnClick> to <button type='submit'>
with named values (__sidebar_N) for SSR form submission
- Keep @OnClick handlers on buttons for interactive/bUnit compatibility
- Revert @rendermode InteractiveServer from sample page (SSR is the target)
- Update Playwright helper to use WaitForLoadStateAsync(NetworkIdle)
- Update bUnit selectors from 'a' to 'button[type=submit]' for sidebar
- Add PR test summary comments via EnricoMi/publish-unit-test-result-action
- 49 bUnit tests passing
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: CI workflow comment_mode and flaky ConfigurationManager test
- Change comment_mode from 'update' to 'always' (valid value for EnricoMi action)
- Add [Collection] to ConfigurationManagerTests to prevent parallel static state race
- Use ShouldNotBeNull() instead of null-forgiving operator for better diagnostics
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: Playwright tests use Attached state for hidden input locators
- WaitForAsync on input[type='hidden'] needs State=Attached (not Visible)
- Reset sample wizard step initial values to 0 for correct test flow
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: increase SelectMethodAsync test timeout from 2s to 5s
Prevents flaky failures on slow CI runners where async data loading
may not complete within 2 seconds.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>1 parent ae505ca commit 2398866
327 files changed
Lines changed: 4470 additions & 977927 deletions
File tree
- .github/workflows
- .squad
- agents
- colossus
- cyclops
- forge
- rogue
- decisions/inbox
- samples
- AfterBlazorServerSide.Tests
- AfterBlazorServerSide/Components/Pages/ControlSamples/Wizard
- AfterZavaLoanPortal
- Components
- Layout
- migration-artifacts
- codebehind
- site
- AjaxToolkit
- Accordion
- AlwaysVisibleControlExtender
- AutoCompleteExtender
- BalloonPopupExtender
- CalendarExtender
- CollapsiblePanelExtender
- ConfirmButtonExtender
- DragPanelExtender
- DropShadowExtender
- FilteredTextBoxExtender
- HoverMenuExtender
- ListSearchExtender
- MaskedEditExtender
- ModalPopupExtender
- NumericUpDownExtender
- PasswordStrength
- PopupControlExtender
- ResizableControlExtender
- RoundedCornersExtender
- SlideShowExtender
- SliderExtender
- TabContainer
- TextBoxWatermarkExtender
- ToggleButtonExtender
- UpdatePanelAnimationExtender
- ValidatorCalloutExtender
- migration-guide
- Analyzers
- BWFC022
- BWFC023
- BWFC024
- DataControls
- Chart
- DataGrid
- DataList
- DataPager
- DetailsView
- FormView
- GridView
- ListView
- PagerSettings
- Repeater
- EditorControls
- AdRotator
- BulletedList
- Button
- Calendar
- CheckBoxList
- CheckBox
- ContentPlaceHolder
- Content
- DropDownList
- FileUpload
- HiddenField
- ImageButton
- Image
- Label
- LinkButton
- ListBox
- Literal
- Localize
- MasterPage
- MultiView
- Panel
- PlaceHolder
- RadioButtonList
- RadioButton
- ScriptManagerProxy
- ScriptManager
- Substitution
- Table
- TextBox
- Timer
- UpdatePanel
- UpdateProgress
- View
- LoginControls
- ChangePassword
- CreateUserWizard
- LoginName
- LoginStatus
- LoginView
- Login
- PasswordRecovery
- MigrationGuides/KnownFidelityDivergences
- Migration
- Analyzers
- AutomatedMigration
- ChecklistTemplate
- ClientScriptMigrationGuide
- ControlCoverage
- CopilotSkills
- CoreMigration
- DataMigration
- IdentityMigration
- Overview
- Custom-Controls
- CustomControl-BaseClasses
- DeferredControls
- DeprecationGuidance
- FindControl-Migration
- InlineCSharp
- MasterPages
- Methodology
- MigratingAshxHandlers
- NET-Standard
- Phase1-AppStartStubs
- Phase1-ConfigurationManager
- Phase2-EventHandlerSignatures
- Phase2-LifecycleTransforms
- Phase2-SessionShim
- QuickStart
- StranglerFigPattern
- Strategies
- ThemesAndSkins
- User-Controls
- migration_readiness
- readme
- UtilityFeatures
- CacheShim
- Databinder
- EnumParameter
- IDRendering
- JavaScriptSetup
- L2AutomationShims
- NamingContainer
- PageService
- RequestShim
- ResponseRedirect
- ServerShim
- ServiceRegistration
- StylingComponents
- ViewStateAndPostBack
- ViewState
- WebFormsForm
- WebFormsPage
- ValidationControls
- BaseCompareValidator
- BaseValidator
- CompareValidator
- ControlToValidate
- CustomValidator
- ModelErrorMessage
- RangeValidator
- RegularExpressionValidator
- RequiredFieldValidator
- ValidationSummary
- assets
- images
- javascripts
- lunr
- min
- workers
- stylesheets
- cli
- report
- todo-conventions
- transforms
- dashboard
- images
- analyzers
- chart
- migration-tests
- wingtiptoys-2026-03-04
- build-output
- images
- layer1-results
- layer2-3-results
- migrate-output
- report
- scan-output
- wingtiptoys-run2-2026-03-04
- build-output
- images
- migrate-output
- report
- scan-output
- wingtiptoys-run3-2026-03-04
- build-output
- images
- migrate-output
- report
- scan-output
- wingtiptoys-run4-2026-03-04
- images
- migrate-output
- report
- wingtiptoys-run5-2026-03-04
- analysis-and-recommendations
- build-output
- manual-fixes
- migrate-output
- report
- timing
- wingtiptoys-run6-2026-03-04
- raw-data
- report
- search
- themes-and-skins
- src
- BlazorWebFormsComponents.Test
- DataBoundComponent
- Wizard
- BlazorWebFormsComponents
- ZavaLoanPortal.AcceptanceTests
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
117 | 117 | | |
118 | 118 | | |
119 | 119 | | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
97 | 97 | | |
98 | 98 | | |
99 | 99 | | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 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 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
355 | 355 | | |
356 | 356 | | |
357 | 357 | | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
133 | 133 | | |
134 | 134 | | |
135 | 135 | | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
12 | 20 | | |
13 | 21 | | |
14 | 22 | | |
| |||
74 | 82 | | |
75 | 83 | | |
76 | 84 | | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
115 | 115 | | |
116 | 116 | | |
117 | 117 | | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
0 commit comments