Minor UI changes
This commit is contained in:
@@ -13,6 +13,7 @@ async function importFixture(page, payload = fixture()) {
|
||||
await page.clock.install({ time:now });
|
||||
await page.goto('/#/settings');
|
||||
await expect(page.getByRole('heading',{name:'Réglages',exact:true})).toBeVisible();
|
||||
await expect(page.getByText('Pensez à exporter et vérifier régulièrement une sauvegarde pour pouvoir restaurer vos données en cas de perte de l’appareil.',{exact:true})).toBeVisible();
|
||||
await page.getByRole('button',{name:'Gérer les données et sauvegardes'}).click();
|
||||
await expect(page.getByRole('heading',{name:'Données et sauvegardes',exact:true})).toBeVisible();
|
||||
await page.locator('input[type=file]').setInputFiles({ name:'fixture-synthetique.json',mimeType:'application/json',buffer:Buffer.from(JSON.stringify(payload)) });
|
||||
@@ -21,6 +22,11 @@ async function importFixture(page, payload = fixture()) {
|
||||
await expect(page.getByRole('status').filter({hasText:'Données remplacées'})).toBeVisible();
|
||||
await page.getByRole('button',{name:'Récap',exact:true}).click();
|
||||
}
|
||||
async function openDataSettings(page) {
|
||||
await page.getByRole('button',{name:'Réglages',exact:true}).click();
|
||||
await page.getByRole('button',{name:'Gérer les données et sauvegardes'}).click();
|
||||
await expect(page.getByRole('heading',{name:'Données et sauvegardes',exact:true})).toBeVisible();
|
||||
}
|
||||
async function entries(page) {
|
||||
return page.evaluate(() => new Promise((resolve,reject) => {
|
||||
const request = indexedDB.open('TimeLogDB');
|
||||
@@ -88,8 +94,7 @@ test('consultation, correction, recalcul, copie et statistiques à 320 px', asyn
|
||||
await expect(page.getByText('Heures de présence',{exact:true})).toBeVisible();
|
||||
await expect(page.getByTestId('stats-worked')).toHaveText('9h00');
|
||||
expect(await page.evaluate(() => document.documentElement.scrollWidth <= innerWidth)).toBe(true);
|
||||
// Wider or larger fonts must also fit the backup reminder on CI and mobile.
|
||||
await expect(page.locator('.update')).toContainText('Sauvegarde à vérifier');
|
||||
await expect(page.getByText('Sauvegarde à vérifier',{exact:true})).toHaveCount(0);
|
||||
await page.addStyleTag({content:'.update { font-family: monospace; font-size: 24px; }'});
|
||||
expect(await page.evaluate(() => document.documentElement.scrollWidth <= innerWidth)).toBe(true);
|
||||
});
|
||||
@@ -113,7 +118,7 @@ test('date conservée, rechargement et Retour depuis les trois nouvelles pages',
|
||||
await expect(page.getByRole('heading',{name:'Réglages',exact:true})).toBeVisible();
|
||||
});
|
||||
|
||||
test('écran données dédié, conservation persistée et accès depuis le rappel', async ({page}) => {
|
||||
test('écran données dédié, conservation persistée et accès depuis les réglages', async ({page}) => {
|
||||
await importFixture(page,fixture({dates:['2025-01-01',date]}));
|
||||
await page.getByRole('button',{name:'Réglages',exact:true}).click();
|
||||
await expect(page.getByRole('button',{name:'Exporter les données',exact:true})).toHaveCount(0);
|
||||
@@ -144,14 +149,13 @@ test('écran données dédié, conservation persistée et accès depuis le rappe
|
||||
await page.getByRole('button',{name:'Gérer les données et sauvegardes'}).click();
|
||||
await page.goBack();
|
||||
await expect(page.getByRole('heading',{name:'Réglages',exact:true})).toBeVisible();
|
||||
await page.getByRole('button',{name:'Récap',exact:true}).click();
|
||||
await page.getByRole('button',{name:'Sauvegarder',exact:true}).click();
|
||||
await page.getByRole('button',{name:'Gérer les données et sauvegardes'}).click();
|
||||
await expect(page.getByRole('heading',{name:'Données et sauvegardes',exact:true})).toBeVisible();
|
||||
});
|
||||
|
||||
test('échec de conservation restaure le champ et les données, puis permet de réessayer', async ({page}) => {
|
||||
await importFixture(page,fixture({dates:['2025-01-01',date]}));
|
||||
await page.getByRole('button',{name:'Sauvegarder',exact:true}).click();
|
||||
await openDataSettings(page);
|
||||
const input = page.getByLabel('Conserver (jours)');
|
||||
await expect(input).toHaveValue('30');
|
||||
const before = await storedData(page);
|
||||
@@ -250,7 +254,7 @@ test('export relu et vérifié, PWA relancée hors ligne', async ({page,context}
|
||||
|
||||
test('export modifié refusé sans écriture, puis vérification du fichier original', async ({page}) => {
|
||||
await importFixture(page);
|
||||
await page.getByRole('button',{name:'Sauvegarder',exact:true}).click();
|
||||
await openDataSettings(page);
|
||||
const downloading = page.waitForEvent('download');
|
||||
await page.getByRole('button',{name:'Exporter les données',exact:true}).click();
|
||||
const download = await downloading;
|
||||
@@ -311,7 +315,7 @@ test('purge confirmée et restauration de sa sauvegarde récupérable', async ({
|
||||
|
||||
test('échec de purge conserve les journées et la sauvegarde précédente, puis permet de réessayer', async ({page}) => {
|
||||
await importFixture(page,fixture({dates:['2025-01-01',date]}));
|
||||
await page.getByRole('button',{name:'Sauvegarder',exact:true}).click();
|
||||
await openDataSettings(page);
|
||||
const dialog = page.getByRole('dialog',{name:'Confirmer la purge'});
|
||||
await page.getByRole('button',{name:'Purger maintenant'}).click();
|
||||
await dialog.getByRole('button',{name:'Confirmer la purge'}).click();
|
||||
|
||||
@@ -102,6 +102,16 @@ test('association, modification hors ligne, conflit, rôle et révocation entre
|
||||
await page.getByRole('button', { name: 'Retour aux appareils', exact: true }).click();
|
||||
await sync(page);
|
||||
await expect(page.getByRole('button', { name: 'Utiliser cet appareil pour les automatismes', exact: true })).toBeVisible();
|
||||
await page.getByRole('button', { name: 'Retour aux données', exact: true }).click();
|
||||
const roleNotice = page.getByText('Les automatismes sont exécutés sur un autre appareil.', { exact: true });
|
||||
await expect(roleNotice).toBeVisible();
|
||||
await page.getByRole('button', { name: 'Plus tard', exact: true }).click();
|
||||
await expect(roleNotice).toHaveCount(0);
|
||||
await page.reload();
|
||||
await expect(page.getByRole('heading', { name: 'Données et sauvegardes', exact: true })).toBeVisible();
|
||||
await expect(roleNotice).toHaveCount(0);
|
||||
await page.goto('/#/sync');
|
||||
await expect(page.getByRole('heading', { name: 'Synchronisation et appareils', exact: true })).toBeVisible();
|
||||
await page.getByRole('button', { name: 'Retirer cet appareil…', exact: true }).click();
|
||||
await page.getByRole('button', { name: 'Confirmer le retrait', exact: true }).click();
|
||||
await expect(page.getByRole('button', { name: 'Synchroniser maintenant', exact: true })).toBeEnabled();
|
||||
|
||||
Reference in New Issue
Block a user