This commit is contained in:
@@ -6,6 +6,7 @@ Multi-Hoster-Upload ist eine Electron-Desktopanwendung für Windows, die große
|
||||
|
||||
## Aktueller Zustand
|
||||
|
||||
- Einstellungssuche nach `2.1.49`: Seitenleistenspalte ab 840 px Viewport einheitlich 260 px statt 190–224 px. Vollständiger deutscher und englischer Platzhalter passt bei unveränderter Schriftgröße; unter 840 px bleibt die bestehende einspaltige Darstellung. Electron-Test misst Textbreite gegen nutzbare Eingabebreite bei 1920/1200/1000/840/839/360 px und prüft Überlauf; Screenshot visuell bestätigt. Noch nicht veröffentlicht.
|
||||
- Log-Einstellungen nach `2.1.49`: Logpfad und Log-Datei-Modus teilen ein Beschriftungsraster; native Modusauswahl auf 240 px begrenzt, 40 px hoch, Pfeil mit 14 px Innenabstand. Hinweis unter dem Dropdown ohne zusätzliche Einrückung. Ordner-/Öffnen-Buttons bleiben neben dem Pfad; schmale Container wechseln auf gestapelte Felder. IDs, Optionen und Logfunktion unverändert. Electron-Regression mit tatsächlichem Template bei drei Breiten und Screenshotprüfung; noch kein Release.
|
||||
- Automatik-Abstand nach `2.1.49`: zusätzlicher 22-px-Unterabstand der Statuskarte vor dem neuen Formularcontainer entfernt. Abstand zur ersten Abschnittsüberschrift entspricht jetzt dem folgenden Abschnitt: jeweils 28 px. Electron-Regression misst beide Abstände bei 1000/760/360 px direkt am echten Template; gezielter Test und Lint erfolgreich. Entwicklerversion wird automatisch neu gestartet; noch kein Release.
|
||||
- Ordnerüberwachungstest nach `2.1.49`: IPC verwendet gespeicherte Ordnerregeln in einer isolierten FolderMonitor-Instanz statt der möglicherweise unkonfigurierten laufenden Überwachung. Funktioniert bei deaktivierter, aktiver und pausierter Überwachung; kein Watcher-/Timerstart, keine neuen Dateien/Statusereignisse am produktiven Monitor, keine Änderung seiner Generation oder Duplikatreservierungen. Fehlender Pfad, unerreichbarer Ordner und Scanfehler werden über feste, übersetzte Fehlermeldungen angezeigt; unbekannte Fehler bleiben bereinigt. Regressionen für die drei Betriebszustände, parallele Tests, Fehlerfälle und IPC-Verdrahtung ergänzt; Entwicklung automatisch neu gestartet.
|
||||
@@ -96,6 +97,7 @@ npm audit --omit=dev
|
||||
|
||||
## Zuletzt verifiziert
|
||||
|
||||
- Einstellungssuche: Layout-/Textbreitentest in Deutsch und Englisch bei sechs Viewports sowie Lint erfolgreich. Startup-Datei 25/26 erfolgreich, bestehender Checkbox-Fokustest einmal mit bekanntem Timingfehler; separat unverändert erneut erfolgreich. Automatischer Neustart bestätigt. Kein Release.
|
||||
- Log-Layout: 47 Startup-/Electron- und Logmodus-Tests sowie Lint erfolgreich. Gemeinsame Feldkante, Feldhöhe, Dropdownbreite, Pfeil-Innenabstand, Hinweise und unveränderte Modusoptionen bei 1000/760/360 px geprüft. Entwicklerversion automatisch neu gestartet; nicht veröffentlicht.
|
||||
- Automatik-Abstand: alle 26 Startup-/Electron-Tests und Lint erfolgreich. Gleiche Abschnittsabstände von 28 px bei drei Breiten bestätigt; automatischer Entwicklungsneustart im Watcher-Log nachgewiesen. Kein Release.
|
||||
- Test bei deaktivierter Ordnerüberwachung: 844 Haupttests, 18 Servertests und Lint erfolgreich. Watcher-Neustart bestätigt. Read-only-Test bleibt unabhängig vom Produktivzustand, bekannte Fehler werden konkret angezeigt. Noch nicht veröffentlicht.
|
||||
|
||||
@@ -5046,3 +5046,9 @@ input[type="checkbox"] {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 840px) {
|
||||
.settings-layout {
|
||||
grid-template-columns: 260px minmax(0, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -222,7 +222,7 @@ app.whenReady().then(async () => {
|
||||
assert.equal(data.ok, true);
|
||||
});
|
||||
|
||||
test('automation and log fields share responsive grids and aligned hints', { skip: process.platform !== 'win32' }, t => {
|
||||
test('settings controls align responsively and search placeholders fit at every breakpoint', { skip: process.platform !== 'win32' }, t => {
|
||||
const root = path.resolve(__dirname, '..');
|
||||
const directory = fs.mkdtempSync(path.join(os.tmpdir(), 'mhu-automation-layout-'));
|
||||
t.after(() => fs.rmSync(directory, { recursive: true, force: true }));
|
||||
@@ -278,6 +278,20 @@ app.whenReady().then(async()=>{
|
||||
assert.deepEqual(layout.options,['single','daily','session']);
|
||||
if(process.env.MHU_LOG_SCREENSHOT && width===1000){await new Promise(resolve=>setTimeout(resolve,500));fs.writeFileSync(process.env.MHU_LOG_SCREENSHOT,(await wc.capturePage()).toPNG())}
|
||||
}
|
||||
const search=source.slice(source.indexOf('<div class="settings-search-wrap">'),source.indexOf('<nav class="settings-navigation"'));
|
||||
const {translateText}=require(path.join(root,'renderer/i18n'));
|
||||
for(const width of [1920,1200,1000,840,839,360]){
|
||||
win.setContentSize(width,700);
|
||||
await wc.loadURL('data:text/html;charset=utf-8,'+encodeURIComponent('<style>'+css+'</style><main id="settings-view" style="display:block;padding:16px;width:100%"><div class="settings-layout"><aside class="settings-sidebar">'+search+'</aside><section class="settings-content"></section></div></main>'));
|
||||
for(const language of ['de','en']){
|
||||
await wc.executeJavaScript('document.getElementById("settingsSearchInput").placeholder='+JSON.stringify(translateText('Einstellungen durchsuchen',language)));
|
||||
const searchSize=await wc.executeJavaScript('(() => {const e=document.getElementById("settingsSearchInput"),s=getComputedStyle(e),p=getComputedStyle(e,"::placeholder"),canvas=document.createElement("canvas"),ctx=canvas.getContext("2d");ctx.font=p.font||s.font;return {available:e.clientWidth-parseFloat(s.paddingLeft)-parseFloat(s.paddingRight),text:ctx.measureText(e.placeholder).width,font:parseFloat(s.fontSize),overflow:document.documentElement.scrollWidth>innerWidth};})()');
|
||||
assert.ok(searchSize.available>=searchSize.text,JSON.stringify({width,language,searchSize}));
|
||||
assert.ok(searchSize.font>=13);
|
||||
assert.equal(searchSize.overflow,false);
|
||||
}
|
||||
if(process.env.MHU_SEARCH_SCREENSHOT && width===1000){await wc.executeJavaScript('document.getElementById("settingsSearchInput").placeholder="Einstellungen durchsuchen"');await new Promise(resolve=>setTimeout(resolve,500));fs.writeFileSync(process.env.MHU_SEARCH_SCREENSHOT,(await wc.capturePage()).toPNG())}
|
||||
}
|
||||
win.destroy();fs.writeFileSync(process.env.MHU_AUTOMATION_RESULT,JSON.stringify({ok:true}));app.exit(0);
|
||||
}).catch(error=>{fs.writeFileSync(process.env.MHU_AUTOMATION_RESULT,JSON.stringify({error:error.stack}));app.exit(1)});
|
||||
`);
|
||||
|
||||
Reference in New Issue
Block a user