Skip to content

Commit 4ba0d06

Browse files
committed
feat(button): test cicd
1 parent 64c6616 commit 4ba0d06

File tree

54 files changed

+6643
-450
lines changed

Some content is hidden

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

54 files changed

+6643
-450
lines changed

.github/workflows/reuseable-ci-checks.yml

Lines changed: 59 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#qqqq to do refactor to here
2-
# naming with the yml name because
31
name: Reusable CI Checks
42

53
on:
@@ -25,6 +23,7 @@ env:
2523
# Build Set Up
2624
USE_TEL_BLAZOR_COMPONENTS_PROJECT_REFERENCE: false
2725
DISABLE_PACKAGE_GENERATION: true
26+
E2E_TRACING_ENABLED: false
2827

2928
# Check Dummy Data
3029
TELBLAZOR_PACKAGE_VERSION: "0.0.0-ci-checks"
@@ -76,7 +75,8 @@ jobs:
7675
/p:NupkgOutputPath=$TELBLAZOR_PACKAGE_LOCAL_OUTPUT_PATH \
7776
/p:UseTELBlazorComponentsProjectReference=$USE_TEL_BLAZOR_COMPONENTS_PROJECT_REFERENCE \
7877
/p:TELBlazorPackageSource=$TELBLAZOR_PACKAGE_SOURCE \
79-
/p:DisablePackageGeneration=$DISABLE_PACKAGE_GENERATION
78+
/p:DisablePackageGeneration=$DISABLE_PACKAGE_GENERATION \
79+
/p:E2ETracingEnabled=$E2E_TRACING_ENABLED
8080
8181
- name: Build solution without generating new package
8282
env:
@@ -88,7 +88,8 @@ jobs:
8888
/p:NupkgOutputPath=$TELBLAZOR_PACKAGE_LOCAL_OUTPUT_PATH \
8989
/p:UseTELBlazorComponentsProjectReference=$USE_TEL_BLAZOR_COMPONENTS_PROJECT_REFERENCE \
9090
/p:TELBlazorPackageSource=$TELBLAZOR_PACKAGE_SOURCE \
91-
/p:DisablePackageGeneration=$DISABLE_PACKAGE_GENERATION
91+
/p:DisablePackageGeneration=$DISABLE_PACKAGE_GENERATION \
92+
/p:E2ETracingEnabled=$E2E_TRACING_ENABLED
9293
9394
9495
reuseable-ci-checks-branch-name-check:
@@ -140,13 +141,65 @@ jobs:
140141
outputs:
141142
status: ${{ job.status }}
142143
steps:
143-
- name: See other project pipeline for Tests
144-
run: echo " See other project pipeline for Tests this is a placeholder"
144+
- name: Checkout code
145+
uses: actions/checkout@v3
146+
147+
- name: Setup .NET
148+
uses: actions/setup-dotnet@v4
149+
with:
150+
global-json-file: global.json
151+
152+
- name: Replace local environment variable in nuget config because cant provide it as a parameter
153+
run: sed -i "s|%TELBlazorPackageSource%|$TELBLAZOR_PACKAGE_LOCAL_OUTPUT_PATH|g" nuget.config
154+
155+
- name: Clean lock files because the newly generated package file will superseed the locks
156+
run: |
157+
find . -name "packages.lock.json" -type f -exec rm -f {} \;
158+
159+
- name: Set up Node.js so we have gulp for retrieving TEL Frontend Css
160+
uses: actions/setup-node@v4
161+
with:
162+
node-version: '20'
163+
164+
- name: Install npm packages so we have gulp for retrieving TEL Frontend Css
165+
working-directory: ./TELBlazor.Components
166+
run: npm ci
167+
168+
- name: Build and create package locally
169+
env:
170+
#Overwrite package generation
171+
DISABLE_PACKAGE_GENERATION: false
172+
run: |
173+
dotnet build TELBlazor.Components -c Release \
174+
/p:TELBlazorPackageVersion=$TELBLAZOR_PACKAGE_VERSION \
175+
/p:NupkgOutputPath=$TELBLAZOR_PACKAGE_LOCAL_OUTPUT_PATH \
176+
/p:UseTELBlazorComponentsProjectReference=$USE_TEL_BLAZOR_COMPONENTS_PROJECT_REFERENCE \
177+
/p:TELBlazorPackageSource=$TELBLAZOR_PACKAGE_SOURCE \
178+
/p:DisablePackageGeneration=$DISABLE_PACKAGE_GENERATION \
179+
/p:E2ETracingEnabled=$E2E_TRACING_ENABLED
180+
181+
- name: Build solution without generating new package
182+
env:
183+
#Overwrite package generation
184+
DISABLE_PACKAGE_GENERATION: true
185+
run: |
186+
dotnet build TELBlazor.sln -c Release \
187+
/p:TELBlazorPackageVersion=$TELBLAZOR_PACKAGE_VERSION \
188+
/p:NupkgOutputPath=$TELBLAZOR_PACKAGE_LOCAL_OUTPUT_PATH \
189+
/p:UseTELBlazorComponentsProjectReference=$USE_TEL_BLAZOR_COMPONENTS_PROJECT_REFERENCE \
190+
/p:TELBlazorPackageSource=$TELBLAZOR_PACKAGE_SOURCE \
191+
/p:DisablePackageGeneration=$DISABLE_PACKAGE_GENERATION \
192+
/p:E2ETracingEnabled=$E2E_TRACING_ENABLED
193+
194+
- name: Run Unit tests
195+
run: |
196+
145197
146198

147199

148200
reuseable-ci-checks-e2e-tests:
149201
name: Check with end to end testing including nojs
202+
timeout-minutes: 60
150203
runs-on: ubuntu-latest
151204
if: success() || failure()
152205
continue-on-error: ${{ inputs.runall }}

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,3 +160,4 @@ _Pvt_Extensions
160160
CHANGELOG.md
161161
/docs
162162
/TELBlazor.Components.ShowCase.WasmStaticClient/wwwroot/appsettings.dev.json
163+
/TELBlazor.Components.UnitTests/appsettings.Development.json

Directory.Packages.props

Lines changed: 66 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,67 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<Project>
3-
<PropertyGroup>
4-
<!-- Enable central management of package versions -->
5-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
6-
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
7-
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
8-
</PropertyGroup>
9-
<ItemGroup>
10-
<!-- Define each package version centrally -->
11-
<!-- Microsoft packages tied to .NET 8 - need version constraints -->
12-
<PackageVersion Include="Blazored.LocalStorage" Version="4.5.0" />
13-
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.14" />
14-
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="8.0.14" PrivateAssets="all" />
15-
<PackageVersion Include="Microsoft.AspNetCore.Components.Web" Version="8.0.14" />
16-
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="8.0.14" />
17-
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="8.0.1" />
18-
<PackageVersion Include="Microsoft.Extensions.Http" Version="8.0.0" />
19-
<PackageVersion Include="Newtonsoft.Json" Version="13.0.1" />
20-
<PackageVersion Include="AutoMapper" Version="1.1.0.118" />
21-
<PackageVersion Include="coverlet.collector" Version="6.0.0" />
22-
<PackageVersion Include="TELBlazor.Components" Version="$(TELBlazorPackageVersion)" />
23-
<PackageVersion Include="xunit" Version="2.9.0" />
24-
<PackageVersion Include="bunit" Version="1.34.0" />
25-
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
26-
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.4" />
27-
<PackageVersion Include="Microsoft.Playwright.NUnit" Version="1.27.1" />
28-
<PackageVersion Include="NUnit" Version="3.14.0" />
29-
<PackageVersion Include="NUnit.Analyzers" Version="3.9.0" />
30-
<PackageVersion Include="NUnit3TestAdapter" Version="4.5.0" />
31-
<PackageVersion Include="Blazored.LocalStorage" Version="4.5.0" />
32-
<PackageVersion Include="Microsoft.Extensions.Http" Version="8.0.1" />
33-
<PackageVersion Include="Serilog" Version="4.2.0" />
34-
<PackageVersion Include="Serilog.Extensions.Logging" Version="8.0.0" />
35-
<PackageVersion Include="Serilog.Formatting.Compact" Version="3.0.0" />
36-
<PackageVersion Include="Serilog.Settings.Configuration" Version="8.0.0" />
37-
<PackageVersion Include="Serilog.Sinks.BrowserConsole" Version="8.0.0" />
38-
<PackageVersion Include="Serilog.Sinks.Http" Version="8.0.0" />
39-
</ItemGroup>
40-
</Project>
2+
<Project>
3+
<PropertyGroup>
4+
<!-- Enable central management of package versions -->
5+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
6+
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
7+
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
8+
</PropertyGroup>
9+
<ItemGroup>
10+
<!-- Microsoft packages tied to .NET 8 -->
11+
<PackageVersion Include="Microsoft.AspNetCore.Components.Web" Version="8.0.14" />
12+
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.14" />
13+
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="8.0.14" PrivateAssets="all" />
14+
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="8.0.14" />
15+
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="8.0.0" />
16+
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="8.0.1" />
17+
<PackageVersion Include="Microsoft.Extensions.Http" Version="8.0.1" />
18+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
19+
20+
<!-- Storage -->
21+
<PackageVersion Include="Blazored.LocalStorage" Version="4.5.0" />
22+
23+
<!-- JSON -->
24+
<PackageVersion Include="Newtonsoft.Json" Version="13.0.1" />
25+
26+
<!-- Mapping -->
27+
<PackageVersion Include="AutoMapper" Version="12.0.1" />
28+
29+
<!-- Logging (Serilog) -->
30+
<PackageVersion Include="Serilog" Version="4.2.0" />
31+
<PackageVersion Include="Serilog.Extensions.Logging" Version="8.0.0" />
32+
<PackageVersion Include="Serilog.Formatting.Compact" Version="3.0.0" />
33+
<PackageVersion Include="Serilog.Settings.Configuration" Version="8.0.0" />
34+
<PackageVersion Include="Serilog.Sinks.BrowserConsole" Version="8.0.0" />
35+
<PackageVersion Include="Serilog.Sinks.Http" Version="8.0.0" />
36+
<PackageVersion Include="Serilog.Expressions" Version="5.0.0" />
37+
<PackageVersion Include="Serilog.Sinks.InMemory" Version="0.14.0" />
38+
<PackageVersion Include="Serilog.Sinks.InMemory.Assertions" Version="0.14.0" />
39+
<PackageVersion Include="Serilog.Sinks.XUnit" Version="2.0.4" />
40+
<PackageVersion Include="Serilog.AspNetCore" Version="8.0.0" />
41+
<PackageVersion Include="Serilog.Sinks.Console" Version="6.0.0" />
42+
<PackageVersion Include="Serilog.Sinks.Debug" Version="3.0.0" />
43+
<PackageVersion Include="Serilog.Sinks.File" Version="6.0.0" />
44+
45+
46+
<!-- Testing - xUnit -->
47+
<PackageVersion Include="xunit" Version="2.9.0" />
48+
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.4" PrivateAssets="all" />
49+
50+
<!-- Testing - General -->
51+
<PackageVersion Include="bunit" Version="1.34.0" />
52+
<PackageVersion Include="coverlet.collector" Version="6.0.0" PrivateAssets="all" />
53+
<PackageVersion Include="AutoFixture" Version="4.18.1" />
54+
<PackageVersion Include="AutoFixture.AutoMoq" Version="4.18.1" />
55+
<PackageVersion Include="FluentAssertions" Version="8.0.1" />
56+
57+
<!-- Testing - Playwright -->
58+
<PackageVersion Include="Deque.AxeCore.Playwright" Version="4.10.1" />
59+
<PackageVersion Include="Microsoft.Playwright" Version="1.50.0" />
60+
<PackageVersion Include="Microsoft.Playwright.MSTest" Version="1.50.0" />
61+
<PackageVersion Include="Microsoft.Playwright.Xunit" Version="1.50.0" />
62+
<PackageVersion Include="Verify.Playwright" Version="3.0.0" />
63+
64+
<!-- Internal packages -->
65+
<PackageVersion Include="TELBlazor.Components" Version="$(TELBlazorPackageVersion)" />
66+
</ItemGroup>
67+
</Project>

PackageSettings.props

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
<TELBlazorPackageVersion>$(TELBlazorPackageVersion)</TELBlazorPackageVersion>
1414

1515
<DisablePackageGeneration>$(DisablePackageGeneration)</DisablePackageGeneration>
16-
16+
17+
<E2ETracingEnabled Condition="'$(E2ETracingEnabled)' == ''">false</E2ETracingEnabled>
18+
<E2ETracingEnabled Condition="'$(E2ETracingEnabled)' != ''">$(E2ETracingEnabled)</E2ETracingEnabled>
1719
</PropertyGroup>
1820

1921
</Project>
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,83 @@
1+
using Microsoft.AspNetCore.Components.Web;
12
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
3+
using Serilog.Core;
4+
using Serilog.Events;
5+
using Serilog;
6+
using TELBlazor.Components.Core.Configuration;
7+
using TELBlazor.Components.Core.Services.HelperServices;
8+
using TELBlazor.Components.ShowCase.Shared.Services.HelperServices;
9+
/*Are used via appsetting*/
10+
using Serilog.Extensions.Logging;
11+
using Serilog.Configuration;
12+
using Microsoft.Extensions.Logging;
13+
using Microsoft.Extensions.DependencyInjection;
14+
using Serilog.Sinks.BrowserConsole;
15+
using Serilog.Formatting.Compact;
16+
using Serilog.Settings.Configuration;
17+
18+
19+
20+
/*qqqq setup*/
21+
using Blazored.LocalStorage;
22+
using Serilog;
23+
using Serilog.Core;
24+
using Serilog.Events;
25+
using TELBlazor.Components.Core.Services.HelperServices;
26+
using TELBlazor.Components.ShowCase.Shared.Services.HelperServices;
27+
using TELBlazor.Components.Core.Configuration;
228

329
var builder = WebAssemblyHostBuilder.CreateDefault(args);
430

5-
await builder.Build().RunAsync();
31+
32+
builder.Configuration.AddJsonFile($"appsettings.{builder.HostEnvironment.Environment}.json", optional: false, reloadOnChange: true);
33+
//builder.Configuration.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
34+
builder.Logging.ClearProviders();
35+
// Read default logging level from configuration
36+
var logLevelString = builder.Configuration["Serilog:MinimumLevel:Default"];
37+
// Convert string to LogEventLevel (with fallback)
38+
if (!Enum.TryParse(logLevelString, true, out LogEventLevel defaultLogLevel))
39+
{
40+
defaultLogLevel = LogEventLevel.Information; // Default if parsing fails
41+
}
42+
43+
// Create a LoggingLevelSwitch that can be updated dynamically
44+
LoggingLevelSwitch levelSwitch = new LoggingLevelSwitch(defaultLogLevel); // Default: Information added this so in production can change the logging
45+
Log.Logger = new LoggerConfiguration()
46+
.ReadFrom.Configuration(builder.Configuration)
47+
.MinimumLevel.ControlledBy(levelSwitch)
48+
.CreateLogger();
49+
50+
// Add Serilog to logging providers
51+
builder.Logging.AddSerilog(Log.Logger, dispose: true);
52+
53+
//for really bad fails
54+
try
55+
{
56+
builder.Services.AddSingleton<ITELBlazorBaseComponentConfiguration>(sp =>
57+
{
58+
return new TELBlazorBaseComponentConfiguration
59+
{
60+
JSEnabled = true, //if we are inject the client then it is true
61+
HostType = $"{builder.Configuration["Properties:Environment"]} {builder.Configuration["Properties:Application"]}"
62+
};
63+
});
64+
65+
// qqqq to DI
66+
builder.Services.AddBlazoredLocalStorage();
67+
68+
//Scoped because being consumed with storage where singleton doesnt survive mvc page teardown
69+
builder.Services.AddScoped<LoggingLevelSwitch>(sp => levelSwitch);
70+
builder.Services.AddScoped<ILogLevelSwitcherService, SerilogLogLevelSwitcherService>();
71+
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
72+
73+
await builder.Build().RunAsync();
74+
}
75+
catch (Exception ex)
76+
{
77+
//If in production as requires sending to api we may never receive it
78+
Log.Fatal(ex, "Application terminated unexpectedly");
79+
}
80+
finally
81+
{
82+
Log.CloseAndFlush(); // Ensure logs are flushed before exit
83+
}

TELBlazor.Components.ShowCase.E2ETests.WasmServerHost/TELBlazor.Components.ShowCase.E2ETests.WasmServerHost.Client/TELBlazor.Components.ShowCase.E2ETests.WasmServerHost.Client.csproj

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,25 @@
66
<Nullable>enable</Nullable>
77
<NoDefaultLaunchSettingsFile>true</NoDefaultLaunchSettingsFile>
88
<StaticWebAssetProjectMode>Default</StaticWebAssetProjectMode>
9+
<!--to enable e2e tests-->
10+
<PreserveCompilationContext>true</PreserveCompilationContext>
11+
912
</PropertyGroup>
10-
11-
<ItemGroup>
12-
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" />
13-
</ItemGroup>
13+
<ItemGroup>
14+
<PackageReference Include="Serilog" />
15+
<PackageReference Include="Serilog.Extensions.Logging" />
16+
<PackageReference Include="Blazored.LocalStorage" />
17+
<PackageReference Include="Microsoft.Extensions.Http" />
18+
<PackageReference Include="Serilog" />
19+
<PackageReference Include="Serilog.Extensions.Logging" />
20+
<PackageReference Include="Serilog.Formatting.Compact" />
21+
<PackageReference Include="Serilog.Settings.Configuration" />
22+
<PackageReference Include="Serilog.Sinks.BrowserConsole" />
23+
<PackageReference Include="Serilog.Sinks.Http" />
24+
</ItemGroup>
25+
<ItemGroup>
26+
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" />
27+
</ItemGroup>
1428

1529
<ItemGroup>
1630
<ProjectReference Include="..\..\TELBlazor.Components.ShowCase.Shared\TELBlazor.Components.ShowCase.Shared.csproj" />

0 commit comments

Comments
 (0)