Skip to content

Commit 78678c7

Browse files
csharpfritzCopilot
andcommitted
feat: add FormView DataItem parameter + Content SSR fallback + Run 44 (23/25)
- FormView: added DataItem parameter that wraps single item into Items collection, fixing empty rendering for single-record data binding - Content: added ShouldRenderInline fallback for SSR mode (no MasterPage) - Run 44 benchmark: 23/25 acceptance tests passing (92%) - All 2904 BWFC unit tests pass across net8.0/net9.0/net10.0 - Updated AfterWingtipToys sample with latest migration output Remaining failures: - UpdateCartQuantity: BoundField renders read-only (needs TemplateField) - RegisterAndLogin: Auth flow timeout (not BWFC-related) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 7e6823e commit 78678c7

59 files changed

Lines changed: 946 additions & 1484 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
74.5 KB
Loading
75.6 KB
Loading
70.1 KB
Loading
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# WingtipToys Migration Benchmark — Run 44
2+
3+
**Date:** 2026-05-08
4+
**Branch:** `feature/wingtip-next-features-review` (PR #545)
5+
**Operator:** Copilot CLI + Jeffrey T. Fritz
6+
7+
## Summary
8+
9+
| Metric | Value |
10+
|--------|-------|
11+
| **Acceptance Tests** | **23/25 (92%)** |
12+
| **Build Errors (post-repair)** | 0 |
13+
| **Build Warnings** | 246 |
14+
| **Migration Files** | 32 → 188 |
15+
| **Migration Time** | ~24s |
16+
17+
## Key Fixes in This Run
18+
19+
### FormView `DataItem` Parameter (Critical Fix)
20+
FormView inherited from `DataBoundComponent<T>` which only provided `Items` (collection). Migrated pages used `<FormView DataItem="product" ...>` but `DataItem` was NOT a parameter — Blazor silently ignored it, leaving Items=null and rendering nothing.
21+
22+
**Fix:** Added `DataItem` as a `[Parameter]` on FormView that wraps a single item into the `Items` collection. This fixed ProductDetails and all single-record FormView pages.
23+
24+
### Content Component SSR Inline Fallback
25+
When `<Content>` is used outside a MasterPage/ContentPlaceHolder context (SSR mode), it now renders `@ChildContent` directly instead of waiting for a MasterPage that doesn't exist.
26+
27+
### G6 — Dual `@page` Routes
28+
Pages that had route-mapped URLs (e.g., `ProductDetails/{id}`) now emit two `@page` directives: one for the original path and one preserving the Web Forms URL structure.
29+
30+
### G7 — Redirect-Page Quarantine Bypass
31+
Pages that are pure redirect stubs are now quarantined instead of generating compile errors.
32+
33+
## Test Results
34+
35+
### Passing (23/25)
36+
All core shopping flows work: homepage, product listing, category filtering, product details, add to cart, remove from cart, about/contact pages.
37+
38+
### Failing (2/25)
39+
1. **`UpdateCartQuantity_ChangesItemCount`** — ShoppingCart uses `BoundField` for Quantity (read-only text). Test expects editable `<input>`. Would need `TemplateField` with `TextBox`.
40+
2. **`RegisterAndLogin_EndToEnd`** — Auth flow timeout. Separate from BWFC library.
41+
42+
## Unit Test Regression Check
43+
44+
All **2904** BWFC unit tests pass across net8.0, net9.0, net10.0. No regressions from FormView DataItem or Content changes.
45+
46+
## Screenshots
47+
48+
### Homepage
49+
![Homepage](homepage.png)
50+
51+
### Product List
52+
![Product List](productlist.png)
53+
54+
### Product Details (FormView DataItem fix)
55+
![Product Details](productdetails.png)
56+
57+
### Shopping Cart
58+
![Shopping Cart](shoppingcart.png)
59+
60+
## Changes Made to BWFC Library
61+
62+
| File | Change |
63+
|------|--------|
64+
| `src/BlazorWebFormsComponents/FormView.razor.cs` | Added `DataItem` parameter wrapping single item into `Items` |
65+
| `src/BlazorWebFormsComponents/Content.razor` | Added inline fallback rendering when no MasterPage context |
66+
| `src/BlazorWebFormsComponents/Content.razor.cs` | Added `ShouldRenderInline` property |
67+
68+
## Progress Across Runs
69+
70+
| Run | Tests | Score | Key Achievement |
71+
|-----|-------|-------|-----------------|
72+
| 37 | 25/25 | 100% | Baseline with manual repair |
73+
| 40 | 16/25 | 64% | Template emission fix |
74+
| 41 | 17/25 | 68% | Quarantine + stub improvements |
75+
| 42 | 17/25 | 68% | Instructions overhaul |
76+
| 43 | 17/25 | 68% | G6/G7 CLI transforms |
77+
| **44** | **23/25** | **92%** | **FormView DataItem + Content SSR** |
58.8 KB
Loading

samples/AfterWingtipToys/About.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<Site>
44
<ChildComponents>
55
<Content ContentPlaceHolderID="MainContent">
6-
<h2>@(Title).</h2>
6+
<h2>About.</h2>
77
<h3>Your application description page.</h3>
88
<p>Use this area to provide additional information.</p>
99
</Content>

samples/AfterWingtipToys/Account/AddPhoneNumber.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@page "/AddPhoneNumber"
1+
@page "/Account/AddPhoneNumber"
22
@inherits BlazorWebFormsComponents.WebFormsPageBase
33

44
<div class="migration-pending">

samples/AfterWingtipToys/Account/Confirm.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@page "/Confirm"
1+
@page "/Account/Confirm"
22
@inherits BlazorWebFormsComponents.WebFormsPageBase
33

44
<div class="migration-pending">

samples/AfterWingtipToys/Account/Forgot.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@page "/Forgot"
1+
@page "/Account/Forgot"
22
@inherits BlazorWebFormsComponents.WebFormsPageBase
33

44
<div class="migration-pending">

samples/AfterWingtipToys/Account/Lockout.razor

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
@page "/Account/Lockout"
12
@page "/Lockout"
23
<PageTitle></PageTitle>
34
<Site>

0 commit comments

Comments
 (0)