Skip to content

Commit 07c0f59

Browse files
committed
Add logging improvements, SQLite results store, and enhance sidecar launcher
- **Logging**: Introduced configurable logging across Worker, Hub, and Dashboard with environment-driven settings and logging scopes for contextual logs. - **SQLite Results Store**: Added a durable SQLite-backed adapter for storing runs, tests, and commands in Hub. - **Dashboard**: Added connection status banner for enhanced accessibility in MainLayout. - **Sidecar Launcher**: Replaced raw console outputs with structured logging and added validation for expected JSON payload structure. - **Build**: Updated `Directory.Build.props` to treat nullable warnings as errors in CI builds.
1 parent 1a9fb41 commit 07c0f59

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

+3253
-518
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
#region License
2+
// Copyright (c) 2025 Agenix
3+
//
4+
// SPDX-License-Identifier: Apache-2.0
5+
//
6+
// Licensed under the Apache License, Version 2.0 (the "License");
7+
// you may not use this file except in compliance with the License.
8+
// You may obtain a copy of the License at
9+
//
10+
// https://www.apache.org/licenses/LICENSE-2.0
11+
//
12+
// Unless required by applicable law or agreed to in writing, software
13+
// distributed under the License is distributed on an "AS IS" BASIS,
14+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
// See the License for the specific language governing permissions and
16+
// limitations under the License.
17+
#endregion
18+
19+
namespace Agenix.PlaywrightGrid.HubClient;
20+
21+
/// <summary>
22+
/// Thrown when the hub indicates that capacity is temporarily unavailable for the requested label.
23+
/// Typical HTTP status: 503 Service Unavailable.
24+
/// </summary>
25+
public sealed class CapacityUnavailableException : Exception
26+
{
27+
public CapacityUnavailableException()
28+
{
29+
}
30+
31+
public CapacityUnavailableException(string message) : base(message)
32+
{
33+
}
34+
35+
public CapacityUnavailableException(string message, Exception innerException) : base(message, innerException)
36+
{
37+
}
38+
}
39+
40+
/// <summary>
41+
/// Thrown when the hub rejects the request due to authentication/authorization failure.
42+
/// Typical HTTP statuses: 401 Unauthorized or 403 Forbidden.
43+
/// </summary>
44+
public sealed class AuthenticationException : Exception
45+
{
46+
public AuthenticationException()
47+
{
48+
}
49+
50+
public AuthenticationException(string message) : base(message)
51+
{
52+
}
53+
54+
public AuthenticationException(string message, Exception innerException) : base(message, innerException)
55+
{
56+
}
57+
}
58+
59+
/// <summary>
60+
/// Thrown when the hub returns a response that violates the expected protocol contract
61+
/// (e.g., missing fields, unexpected shape, or unrecognized status codes).
62+
/// </summary>
63+
public sealed class ProtocolException : Exception
64+
{
65+
public ProtocolException()
66+
{
67+
}
68+
69+
public ProtocolException(string message) : base(message)
70+
{
71+
}
72+
73+
public ProtocolException(string message, Exception innerException) : base(message, innerException)
74+
{
75+
}
76+
}

0 commit comments

Comments
 (0)