Updated: 2026-09-15 15:46 ET · Verified live on the ALPA Home (/alpa) and
MEC (/mec) pages, logged in as a DAL member.
TLDR: The banner slot renders as one of two layouts — image
(a single full-width graphic) or composite (logo + title + subtitle) — and tapping it does one of two
things — opens the system browser (external, leaves the app) or an in-app browser sheet
(modal, stays in the app). Both dimensions are set independently per banner by the backend. Today,
DAL's live campaign shows the image layout on ALPA Home (external tap-through) and the composite
layout on the DAL MEC page (modal tap-through) — the same campaign, rendered two ways.
Before you start
Log in as an ALPA member. The banner feed is live (not a test fixture) and the API only
returns rows to authenticated members — signed out, the banner slot is empty.
This walk was verified as a DAL pilot. Any MEC works the same way; which campaign (if any) is
live for your MEC and which layout/tap-through it uses can differ from what's shown here.
The content you'll see is a real ALPA announcement ("Delta Pilots' Contract Opener," C2026),
not sample/mock data — expect it to change or disappear once the campaign ends. The ALPA Home row expires
2026-10-10; if these checks stop matching after that date, that's why.
Checks
1 · Image-layout banner renders on ALPA Home (/alpa)
Steps: Open the app to Home (the default /alpa route).
What you should see: A single full-width graphic across the top of Home (today: the "C2026"
campaign artwork) with a ✕ overlaid in one corner. There's no separate title/subtitle text — this layout
bakes everything into the one image.
Something's wrong if: No banner appears at the top of Home, or it renders as a
broken image.
2 · Tapping it opens the external system browser
Steps: Tap the banner anywhere except the ✕.
What you should see: The app backgrounds and the device's own browser sheet opens on top,
loading the campaign's page (today: a PDF hosted at images.magnetmail.net) — you'll see the
browser's own address bar with the raw domain name, not the app's chrome. Close it with its own ✕/back
control and you're back on Home with the banner still showing.
Something's wrong if: Nothing opens, a blank page loads, or closing the browser
doesn't bring you back where you were.
Manual only, by design: this is a genuine OS-level browser outside the app's own
process — MauiDevFlow can't screenshot or drive it (the in-process screenshot call fails outright the
moment it opens, which is itself a good sign this is really External and not Modal). Verified live via
MauiDevFlow (2026-09-15): the app backgrounds, the system browser loads the real PDF, and relaunching the
app returns to Home with the banner intact.
3 · Composite-layout banner renders on your MEC page (/mec)
Steps: From Home, tap View My MEC (or the bottom-nav tab labeled "<Your MEC> MEC"
— today, DAL MEC).
What you should see: A navy strip with your MEC's logo on the left, a title
("DAL Contract Opener"), a subtitle line beneath it, and a ✕ on the right. This is the same underlying
campaign as Check 1, rendered in the structured layout instead of the flat image.
Something's wrong if: No banner appears at the top of your MEC page, or the
logo/title/subtitle are missing or broken.
Placeholder-looking subtitle, by design (today): the subtitle currently reads
"Subtitle Text Goes Here!" — that's the live feed's actual content, not a rendering bug. Flag it if it's
still there well after the campaign should have real copy, but don't treat it as a defect in the app.
4 · Tapping it opens the in-app modal browser
Steps: Tap the composite banner anywhere except the ✕.
What you should see: A browser sheet slides up loading the same campaign page — but this one
stays inside the app (no OS-level address bar; you'll see the app's own floating "⋯" menu control instead).
Close it and you're back on the MEC page with the banner still showing.
Something's wrong if: Nothing opens, a blank page loads, or closing it doesn't
bring you back where you were.
Why this one's different from Check 2: the backend sets navigation mode
(external vs. modal) independently per banner row, same as it sets layout (image vs. composite)
independently. The two DAL rows today happen to pair image→external and composite→modal, but that's not a
fixed rule — a future campaign could pair either layout with either navigation mode.
5 · Dismiss — gone for the session, back after restart
Steps: Tap either banner's ✕. Then navigate away and back to that page. Finally,
force-quit and reopen the app.
What you should see: The banner disappears immediately and stays gone while you move around the
app — but after the app restarts it shows again. Dismissing one page's banner doesn't dismiss the other's
(ALPA Home and your MEC page track dismissal separately).
Something's wrong if: Dismissing also navigates you somewhere (the ✕ should never
open the campaign), the banner reappears during the same session, dismissing one page's banner also hides
the other's, or it's still gone after a full app restart.
What's already covered by automated tests
These run with the UI suite (BlazorWalkthroughTests), so a regression should be caught
before it reaches you. Run the checks by hand anyway — the automation checks the layout is
present, not the tap-through behavior:
Render + dismissal-persists-across-navigation for the composite layout on ALPA Home
(PromoBanner_RendersOnHome_AndDismissalPersistsAcrossNavigation)
Render + independent dismissal for the image layout across pages
(PromoBanner_ImageStyle_RendersOnKcmAndMemberResources_DismissedIndependently) — note this
test predates the ALPA Home / MEC page split covered here and exercises different routes; it's listed for
completeness, not because it covers Checks 1–4 above.
Tap-through (Checks 2 and 4) is not automated in either direction — External leaves the app's own
process entirely, and Modal opens a native page outside the Blazor WebView these tests drive.
What this checks, overall
The banner slot on ALPA Home and the MEC page, live (not mock) content, both render layouts (image,
composite), both tap-through behaviors (external, modal), and per-page ✕ dismissal that lasts the session
and resets on restart.
What's not covered yet
Other pages' banners — KCM, Member Resources, Jumpseat, and other pages also have a banner
slot; this walk only covers ALPA Home and the MEC page, since those are where a live DAL campaign is
running today.
Other MECs / no active campaign — behavior when your MEC has no live banner, or when a
campaign uses a different layout/navigation pairing than DAL's today, isn't covered here.
Final campaign copy — the MEC page's placeholder-looking subtitle ("Subtitle Text Goes Here!")
is live feed content today; whether that gets replaced before the campaign is considered final is a
content question, not an app one.