feat: refine branded operator experience
Add the MBN-branded startup intro, semantic sidebar icons, and refined card-based operator visuals. Strengthen packaged UI and input smoke coverage for the updated experience.
This commit is contained in:
@@ -834,6 +834,11 @@ public sealed class LegacyPackageInputSmokeContractTests
|
||||
"delete-selected-playlist-rows",
|
||||
"selections[1].shift !== true",
|
||||
"shiftRangeDeletedRowIds = [rangeStartRowId, rangeEndRowId]");
|
||||
Assert.Contains("neutral-pointer guard", request, StringComparison.Ordinal);
|
||||
Assert.Contains("await moveMouse(neutralPoint)", request,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("neutralSignature !== guardSignature", request,
|
||||
StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("Input.dispatchMouseEvent", request,
|
||||
StringComparison.Ordinal);
|
||||
|
||||
@@ -934,6 +939,39 @@ public sealed class LegacyPackageInputSmokeContractTests
|
||||
StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void StartupIntroMustBeDismissedBeforeThePhysicalInputHarnessStarts()
|
||||
{
|
||||
var wait = Slice(
|
||||
Runner,
|
||||
"function Wait-StartupIntroDismissed",
|
||||
"function Assert-NoExistingContentDialog");
|
||||
Assert.Contains("[datetime]::UtcNow.AddSeconds(4)", wait,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("매일경제TV V-STOCK 시작 화면", wait,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("[Windows.Automation.PropertyCondition]::new(", wait,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("$intro.Current.IsOffscreen", wait,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("Assert-ExactApplicationStillRunning", wait,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("Assert-NoTornadoConnection", wait,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("remained visible beyond its four-second bound", wait,
|
||||
StringComparison.Ordinal);
|
||||
|
||||
var launch = Slice(
|
||||
Runner,
|
||||
"$script:Phase = 'package launch'",
|
||||
"$harnessRun = Invoke-NodeHarnessUnderTcpWatch");
|
||||
AssertInOrder(
|
||||
launch,
|
||||
"Wait-ExactLoopbackListener",
|
||||
"Wait-StartupIntroDismissed",
|
||||
"$script:Phase = 'real input harness'");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DebugAppXMustMatchTheLatestMsixAndCurrentWebSourceBeforeLaunch()
|
||||
{
|
||||
@@ -946,7 +984,10 @@ public sealed class LegacyPackageInputSmokeContractTests
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("[IO.Compression.ZipFile]::OpenRead($msix)", guard,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("'AppxManifest.xml'", guard, StringComparison.Ordinal);
|
||||
Assert.Contains("'Assets/StartupHero.png'", guard, StringComparison.Ordinal);
|
||||
Assert.Contains("'Web/app.js'", guard, StringComparison.Ordinal);
|
||||
Assert.Contains("'Web/Brand/logo.png'", guard, StringComparison.Ordinal);
|
||||
Assert.Contains("'Web/index.html'", guard, StringComparison.Ordinal);
|
||||
Assert.Contains("'Web/playout-ui.js'", guard, StringComparison.Ordinal);
|
||||
Assert.Contains("'Web/styles.css'", guard, StringComparison.Ordinal);
|
||||
@@ -956,7 +997,20 @@ public sealed class LegacyPackageInputSmokeContractTests
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("registered Debug AppX is stale", guard,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("Web\\app.js", guard, StringComparison.Ordinal);
|
||||
foreach (var relativeSource in new[]
|
||||
{
|
||||
"Web\\app.js",
|
||||
"Web\\index.html",
|
||||
"Web\\styles.css",
|
||||
"Web\\workspace-navigation.js"
|
||||
})
|
||||
{
|
||||
Assert.Contains(relativeSource, guard, StringComparison.Ordinal);
|
||||
}
|
||||
Assert.Contains("$sourcePath = Join-Path $projectRoot $relativeSource", guard,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("$installedPath = Join-Path $InstallLocation $relativeSource", guard,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains(
|
||||
"Assert-DebugAppXMatchesLatestPackage ([string]$package.InstallLocation)",
|
||||
Runner,
|
||||
|
||||
Reference in New Issue
Block a user