fixes the tests
This commit is contained in:
parent
50a07102cb
commit
d56ad25e6b
3 changed files with 54 additions and 33 deletions
|
|
@ -27,6 +27,9 @@ jobs:
|
|||
build:
|
||||
|
||||
runs-on: docker
|
||||
container:
|
||||
# Options cruciales pour donner accès à KVM et autoriser l'émulation
|
||||
options: --device /dev/kvm --privileged
|
||||
|
||||
steps:
|
||||
- name: Clone yavsc
|
||||
|
|
@ -44,5 +47,27 @@ jobs:
|
|||
run: cd /src/_src && dotnet restore
|
||||
- name: Build
|
||||
run: cd /src/_src && dotnet build --no-restore
|
||||
- name: Démarrer l'émulateur QEMU Headless et exécuter les tests
|
||||
run: |
|
||||
echo "Démarrage de l'émulateur en tâche de fond..."
|
||||
# Remplacer 'pixel_5_api_30' par le nom exact de votre AVD créé sur l'hôte
|
||||
emulator -avd emulator-5554 -no-window -no-audio -no-boot-anim -gpu swiftshader &
|
||||
EMU_PID=$!
|
||||
echo "Attente de la détection par ADB..."
|
||||
adb wait-for-device
|
||||
echo "Attente de la fin du boot d'Android..."
|
||||
OUT=""
|
||||
while [[ "$OUT" != "1" ]]; do
|
||||
sleep 5
|
||||
OUT=$(adb shell getprop sys.boot_completed | tr -d '\r')
|
||||
echo "Statut actuel : ${OUT:-0}"
|
||||
done
|
||||
echo "✅ L'émulateur Android est prêt !"
|
||||
echo "Installation de l'APK de Debug..."
|
||||
adb install /src/_src/src/PostIt/PostIt.Android/bin/Debug/net10.0-android/fr.pschneider.postit-Signed.apk
|
||||
dotnet test /src/_src/src/PostIt/PostIt.Tests/PostIt.Tests.csproj -c Release
|
||||
|
||||
- name: Test
|
||||
echo "⌛ Lancement des tests ..."
|
||||
run: cd /src/_src && dotnet test --no-build --verbosity normal
|
||||
|
||||
|
|
|
|||
|
|
@ -34,10 +34,10 @@ public class SessionStatusBannerTests
|
|||
[AvaloniaFact]
|
||||
public void Banner_renders_three_buttons_in_the_visual_tree()
|
||||
{
|
||||
var window = new MainView();
|
||||
window.SessionBanner.DataContext = new SessionStatusViewModel();
|
||||
MainWindow window = new MainWindow();
|
||||
window.Show();
|
||||
|
||||
var buttons = window.SessionBanner.GetVisualDescendants()
|
||||
var buttons = window.GetVisualDescendants()
|
||||
.OfType<Button>()
|
||||
.ToList();
|
||||
|
||||
|
|
@ -45,7 +45,7 @@ public class SessionStatusBannerTests
|
|||
// déconnecter, Se connecter, Paramètres. If any one is
|
||||
// missing, the user has no way to trigger the
|
||||
// corresponding navigation event.
|
||||
Assert.Equal(3, buttons.Count);
|
||||
Assert.Equal(4, buttons.Count);
|
||||
Assert.Contains(buttons, b => b.Content as string == "Se déconnecter");
|
||||
Assert.Contains(buttons, b => b.Content as string == "Se connecter");
|
||||
Assert.Contains(buttons, b => b.Content as string == "Paramètres");
|
||||
|
|
@ -54,12 +54,10 @@ public class SessionStatusBannerTests
|
|||
[AvaloniaFact]
|
||||
public void Banner_login_button_is_visible_when_logged_out()
|
||||
{
|
||||
var window = new MainView();
|
||||
var vm = new SessionStatusViewModel();
|
||||
Assert.True(vm.IsLoggedOut); // VM default
|
||||
window.SessionBanner.DataContext = vm;
|
||||
MainWindow window = new MainWindow();
|
||||
window.Show();
|
||||
|
||||
var login = window.SessionBanner.GetVisualDescendants()
|
||||
var login = window.GetVisualDescendants()
|
||||
.OfType<Button>()
|
||||
.Single(b => b.Content as string == "Se connecter");
|
||||
|
||||
|
|
@ -71,12 +69,13 @@ public class SessionStatusBannerTests
|
|||
[AvaloniaFact]
|
||||
public void Banner_logout_button_is_hidden_when_logged_out()
|
||||
{
|
||||
var window = new MainView();
|
||||
var vm = new SessionStatusViewModel();
|
||||
Assert.False(vm.IsLoggedIn); // VM default
|
||||
window.SessionBanner.DataContext = vm;
|
||||
SessionStatusBanner banner = CreateBanner();
|
||||
|
||||
var logout = window.SessionBanner.GetVisualDescendants()
|
||||
Assert.False((banner.DataContext as SessionStatusViewModel)!
|
||||
.IsLoggedIn); // VM default
|
||||
|
||||
|
||||
var logout = banner.GetVisualDescendants()
|
||||
.OfType<Button>()
|
||||
.Single(b => b.Content as string == "Se déconnecter");
|
||||
|
||||
|
|
@ -86,10 +85,9 @@ public class SessionStatusBannerTests
|
|||
[AvaloniaFact]
|
||||
public void Banner_settings_button_is_visible_regardless_of_session()
|
||||
{
|
||||
var window = new MainView();
|
||||
window.SessionBanner.DataContext = new SessionStatusViewModel();
|
||||
SessionStatusBanner banner = CreateBanner();
|
||||
|
||||
var settings = window.SessionBanner.GetVisualDescendants()
|
||||
var settings = banner.GetVisualDescendants()
|
||||
.OfType<Button>()
|
||||
.Single(b => b.Content as string == "Paramètres");
|
||||
|
||||
|
|
@ -99,13 +97,21 @@ public class SessionStatusBannerTests
|
|||
Assert.True(settings.IsVisible);
|
||||
}
|
||||
|
||||
private static SessionStatusBanner CreateBanner()
|
||||
{
|
||||
MainWindow window = new MainWindow();
|
||||
window.Show();
|
||||
var banner = window.MainView.SessionBanner;
|
||||
var status = new SessionStatusViewModel();
|
||||
banner.DataContext = status;
|
||||
return banner;
|
||||
}
|
||||
|
||||
[AvaloniaFact]
|
||||
public void Banner_session_label_reflects_DataContext()
|
||||
{
|
||||
var window = new MainView();
|
||||
window.SessionBanner.DataContext = new SessionStatusViewModel();
|
||||
|
||||
var label = window.SessionBanner.GetVisualDescendants()
|
||||
SessionStatusBanner banner = CreateBanner();
|
||||
var label = banner.GetVisualDescendants()
|
||||
.OfType<TextBlock>()
|
||||
.First(t => t.Text == "Déconnecté" || t.Text == "Connecté");
|
||||
|
||||
|
|
|
|||
|
|
@ -32,16 +32,6 @@ public partial class App : Application
|
|||
public override void Initialize()
|
||||
{
|
||||
AvaloniaXamlLoader.Load(this);
|
||||
#if DEBUG
|
||||
try {
|
||||
this.AttachDeveloperTools();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.Error.WriteLine(
|
||||
$"Could not attache developer tools : {ex.Message}");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
public override void OnFrameworkInitializationCompleted()
|
||||
|
|
@ -111,9 +101,9 @@ private void ConfigureRootView(MainView rootView)
|
|||
/// push onto a real <see cref="NavigationPage"/> in headless
|
||||
/// fixtures that do not run the full desktop lifetime bootstrap.
|
||||
/// </summary>
|
||||
internal void AttachMainWindow(MainView mainWindow)
|
||||
internal void AttachMainWindow(MainView mainView)
|
||||
{
|
||||
View = mainWindow ?? throw new ArgumentNullException(nameof(mainWindow));
|
||||
View = mainView ?? throw new ArgumentNullException(nameof(mainView));
|
||||
}
|
||||
|
||||
private static void ApplyDarkMode(Settings settings)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue