feat(ci): Add GitHub Actions workflows for test automation and status badges

Add comprehensive test automation setup with GitHub Actions:
- Create test.yml for running tests on main/develop branches
- Add pr-test.yml for PR validation with test results comments
- Add update-badges.yml for dynamic test status badge updates
- Configure code coverage reporting with Codecov integration

Documentation:
- Add BADGE_SETUP.md with instructions for configuring test status badges
- Add WORKFLOWS_GUIDE.md explaining CI/CD workflow setup
- Update README.md with build and test status badges

Test Framework:
- Configure test project to use .NET 9.0
- Set up test coverage reporting with coverlet
- Add integration tests with WireMock for API mocking
- Add unit tests for configuration and HTTP client components
- Document testing strategy in TestingStrategy.md

Build:
- Add Dockerfile.test for containerized testing
- Update .gitignore for test artifacts
- Configure test dependencies in VRCAuthProxy.Tests.csproj

This change enables automated testing on PRs and branches, with visual status indicators and detailed test results in PR comments.
This commit is contained in:
MiscFrizzy 2025-04-07 06:30:31 -04:00
parent 23b5a504b5
commit 319f1071bf
18 changed files with 939 additions and 12 deletions

View file

@ -0,0 +1,45 @@
using System.Net;
using WireMock.Server;
namespace VRCAuthProxy.Tests.Helpers
{
public class TestSetup : IDisposable
{
public WireMockServer MockVRChatApi { get; private set; }
public TestSetup()
{
// Start WireMock server to mock VRChat API
MockVRChatApi = WireMockServer.Start();
}
public void Dispose()
{
MockVRChatApi?.Dispose();
}
/// <summary>
/// Creates a test configuration with mock accounts
/// </summary>
public static Config CreateTestConfig()
{
var config = new Config();
config.Accounts = new List<ConfigAccount>
{
new ConfigAccount
{
username = "testuser1",
password = "testpassword1",
totpSecret = "TESTSECRET1"
},
new ConfigAccount
{
username = "testuser2",
password = "testpassword2"
}
};
return config;
}
}
}