Testanleitung: eigenes X-Display je Projekt fuer Parallelbetrieb
Damit mehrere Agenten gleichzeitig Oberflaechen testen koennen, bekommt jedes Projekt eine feste Displaynummer (Vorgabe Richard): :99 PolyTrader, :98 Predictalytics, :97 ClawdDotNet, :96 IBKRTrader, :95 und absteigend fuer kuenftige Projekte. Zwei Prozesse auf demselben Display sehen die Fenster des jeweils anderen - Klicks landen im falschen Programm, Aufnahmen zeigen fremde Anwendungen. Beim Durcharbeiten fielen zwei weitere Kollisionspunkte auf, die zum Parallelbetrieb dazugehoeren und mit aufgenommen wurden: - Screenshot- und Logdateien in /tmp brauchen ein Projektpraefix. /tmp/v_1.png ueberschreiben sich parallel laufende Projekte gegenseitig. - "xvfb-run -a" darf NICHT mehr verwendet werden: Das -a sucht sich selbst ein freies Display und beginnt dabei bei :99 - ausgerechnet PolyTraders Nummer. Stattdessen "xvfb-run -n <nummer>". Die Warnung ist nicht theoretisch: Auf der VM lag ein verwaister X98-Socket, entstanden durch genau so einen "xvfb-run -a"-Aufruf beim smoke-ui-Test, als :99 belegt war. Er blockierte Predictalytics' reservierte Nummer, ohne dass ein Prozess lief. Entfernt, und die Anleitung erklaert jetzt, wie man verwaiste Sockets erkennt (ls /tmp/.X11-unix/ gegen pgrep -a Xvfb lesen) und aufraeumt. Weiter ergaenzt: - pkill nie ohne Displaynummer - "pkill Xvfb" erschlaegt die Sitzungen aller anderen Projekte. - DISPLAY in jedem Skript setzen, sonst landet man auf :0, dem echten Desktop. - Die Skriptvorlage hat jetzt einen Kopf mit PROJEKT/DISP/FENSTER; das ist alles, was sich je Projekt unterscheidet. Praktisch gegengetestet. - Aufraeumabschnitt und Belegungsliste um Displays und Verzeichnisse erweitert. Nebenbei aufgefallen: Das PolyTrader-Publish lag unter ~/pt-test statt ~/polytrader-test und verletzte damit die eigene Verzeichniskonvention. Umbenannt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -162,6 +162,16 @@
|
||||
<Setter Property="Foreground" Value="{DynamicResource AppMutedTextBrush}" />
|
||||
</Style>
|
||||
|
||||
<!-- Gewinn/Verlust als Klasse statt als im Code aufgelöster Pinsel. Über DynamicResource
|
||||
folgt die Farbe dem Themenwechsel von selbst; ein im Code geholter Pinsel blieb dagegen
|
||||
auf der Farbe stehen, die beim Erzeugen der Zeile galt (Befund B-6). -->
|
||||
<Style Selector="TextBlock.positive, SelectableTextBlock.positive">
|
||||
<Setter Property="Foreground" Value="{DynamicResource AppPositiveBrush}" />
|
||||
</Style>
|
||||
<Style Selector="TextBlock.negative, SelectableTextBlock.negative">
|
||||
<Setter Property="Foreground" Value="{DynamicResource AppNegativeBrush}" />
|
||||
</Style>
|
||||
|
||||
<Style Selector="TextBlock.mono, SelectableTextBlock.mono">
|
||||
<Setter Property="FontFamily" Value="{DynamicResource AppFontMono}" />
|
||||
</Style>
|
||||
@@ -173,7 +183,6 @@
|
||||
|
||||
<Style Selector="Button">
|
||||
<Setter Property="CornerRadius" Value="0" />
|
||||
<Setter Property="FontFamily" Value="{DynamicResource AppFontHeading}" />
|
||||
<Setter Property="FontSize" Value="13" />
|
||||
<Setter Property="Padding" Value="10,5" />
|
||||
<Setter Property="Background" Value="Transparent" />
|
||||
@@ -181,6 +190,19 @@
|
||||
<Setter Property="BorderThickness" Value="1" />
|
||||
</Style>
|
||||
|
||||
<!-- Die Schriftart bewusst OHNE die Schaltflaechen, die zur Vorlage eines anderen
|
||||
Steuerelements gehoeren (#PART_Button - z.B. der Kalenderknopf des
|
||||
CalendarDatePicker). In Avalonia stechen die Styles der Anwendung die Setter eines
|
||||
ControlTheme aus; unsere Schriftliste landete damit auch auf dem Kalenderknopf und
|
||||
verdraengte die Symbolschrift, aus der sein Zeichen stammt. Unter Windows faellt das
|
||||
nicht auf, unter Linux setzt Fontconfig stillschweigend irgendeine andere Schrift
|
||||
ein, in der derselbe Zeichencode etwas voellig anderes bedeutet - im Test stand dort
|
||||
statt eines Kalenders eine sinnlose "26" (Befund B-9 des Linux-Sichttests).
|
||||
ACHTUNG: nur am Bild zu pruefen, nie im Log - Gegenprobe auf der Linux-VM noetig. -->
|
||||
<Style Selector="Button:not(#PART_Button)">
|
||||
<Setter Property="FontFamily" Value="{DynamicResource AppFontHeading}" />
|
||||
</Style>
|
||||
|
||||
<!-- Fluent malt Füllung und Rahmen im Vorlagenteil und überschreibt sie je Zustand.
|
||||
Deshalb müssen Schwebe- und Druckzustand dort gesetzt werden, sonst blitzt beim
|
||||
Überfahren wieder das Fluent-Grau durch. -->
|
||||
@@ -237,7 +259,15 @@
|
||||
|
||||
<!-- ═══ Tabellen ══════════════════════════════════════════════════════════════
|
||||
Kopfzeile klein, gesperrt und gedämpft; Zeilen nur durch eine Haarlinie
|
||||
getrennt (keine Gitterkästen). -->
|
||||
getrennt (keine Gitterkästen).
|
||||
|
||||
SPALTENBREITEN – Regel für alle Grids: feste Pixelbreiten nur, wo sie wirklich
|
||||
gebraucht werden. Der Normalfall ist Width="Auto" (misst Überschrift UND Werte)
|
||||
plus genau eine Width="*"-Spalte mit MinWidth für den Fließtext. Die aus WinForms
|
||||
übernommenen festen Breiten waren auf die Datenwerte ausgelegt, nicht auf die
|
||||
Überschriften – in der breiteren Avalonia-Standardschrift standen dann „Trades (7",
|
||||
„Winrate '" und „Fee (bp" in den Köpfen, während die Werte darunter mühelos passten
|
||||
(Befunde B-11 und B-13 des Linux-Sichttests). -->
|
||||
<Style Selector="DataGrid">
|
||||
<Setter Property="GridLinesVisibility" Value="Horizontal" />
|
||||
<Setter Property="HeadersVisibility" Value="Column" />
|
||||
@@ -263,6 +293,13 @@
|
||||
<Setter Property="Padding" Value="7,5" />
|
||||
</Style>
|
||||
|
||||
<!-- Jede Textzelle zeigt ihren vollen Inhalt im Tooltip. Auch mit sauberen Breiten
|
||||
bleiben lange Marktfragen und Meldungen zwangsläufig abgeschnitten; so kommt man
|
||||
ohne Spaltenziehen an den ganzen Text. -->
|
||||
<Style Selector="DataGridCell TextBlock">
|
||||
<Setter Property="ToolTip.Tip" Value="{Binding $self.Text}" />
|
||||
</Style>
|
||||
|
||||
<!-- ═══ Bausteine ═════════════════════════════════════════════════════════════ -->
|
||||
|
||||
<!-- KPI-Kachel: entspricht den zweizeiligen Labels der WinForms-Oberfläche
|
||||
|
||||
Reference in New Issue
Block a user