Retour au Blog
Démarrage

Épingler et mettre à jour les versions du navigateur

Planifiez les mises à jour du navigateur et du driver avec des versions épinglées, des preuves et un rollback.

Documentation

Vous voulez la documentation structurée pour Démarrage ?

Cet article fait partie de la bibliothèque éditoriale. Pour les étapes de configuration, la référence et les mises à jour continues, passez directement à la section docs.

Une version épinglée passe par une comparaison de candidat vers une mise à jour ou un rollback

Une automatisation reproductible traite navigateur, driver, framework, profil et application comme un ensemble testé. Une étiquette mutable ne prouve pas quel binaire a été utilisé. Épinglez les entrées, notez les versions résolues et comparez chaque mise à jour avec un rollback défini. Le guide de validation des releases couvre la vérification générale; le guide d’intégration des profils Selenium couvre la propriété du profil; cet article précise la propriété de l’update.

Contrat de release

Définissez route, compte synthétique, résultat visible, systèmes supportés et capacités nécessaires. Indiquez les familles navigateur/driver, la politique de patch et la preuve de promotion. Notez aussi les versions application et framework.

Utilisez digest, lockfile ou identifiant d’artefact. Résolvez-le au début du job. Une reprise conserve le même ensemble ou devient une nouvelle tentative candidate.

Matrice des versions

EntréeTracePropriétairePreuveRollback
Binaireartefact/versionplateformeparcours proprerestaurer
Driverfamille compatibleautomatisationnégociationrestaurer
Frameworklockfile/runtimetestsfixture/assertionlockfile précédent
Étatschéma/baselinescénariochargement/expirationbaseline précédent
Applicationidentifiant buildapplicationrésultat visibleredeploy connu

Un smoke test ne couvre que son parcours, pas tous les origins, extensions ou modes.

Épinglez et comparez le candidat

Un navigateur épinglé sans driver peut changer le protocole. Un système différent modifie certificats, polices et permissions. Notez les entrées matérielles et séparez artefacts immuables et données synthétiques.

Exécutez baseline et candidat avec la même entrée, une seule version à la fois. Comparez état visible, navigation, autorisations et nettoyage. Une alternative documentée est une variation; une capacité requise absente bloque.

Mises à jour candidates

Promouvez une mise à jour depuis une lane candidate avec le même scénario synthétique, la même image système et la même politique de proxy. Notez la référence demandée et l’identité résolue avant le lancement.

Tableau de décision

ObservationCatégorieDécisionSuite
Contrat identiquecompatiblepromouvoir après revuegarder les reçus
Alternative documentéevariationpromouvoir si acceptévérifier accessibilité
Négociation impossibleincompatiblebloqueraligner ou restaurer
Parcours réussi, nettoyage échouéinfrastructureretenirgarder les erreurs
Timeout après mutationincertainne pas répéter aveuglémentconsulter le statut

Fixture d’échec

import os from 'node:os';
import path from 'node:path';
import { mkdtemp, rm } from 'node:fs/promises';
import { chromium } from 'playwright';
import { expect } from '@playwright/test';
const dir = await mkdtemp(path.join(os.tmpdir(), 'release-pin-'));
const browser = await chromium.launch({ headless: true });
const context = await browser.newContext({ baseURL: 'http://release.test' });
const page = await context.newPage();
await page.route('/fixtures/missing-readiness', route =>
  route.fulfill({ status: 200, contentType: 'text/html', body: '<main><p>Candidat</p></main>' })
);
let failure;
const remember = (label, error) => {
  const current = new Error(`${label}: ${error.message}`, { cause: error });
  failure = failure ? new AggregateError([failure, current], `${failure.message}; ${label} failed`) : current;
};
try {
  await page.goto('/fixtures/missing-readiness');
  await expect(page.getByRole('status')).toHaveText('Ready', { timeout: 250 });
} catch (error) {
  remember('assertion fixture', error);
} finally {
  try {
    await context.close();
  } catch (error) {
    remember('fermeture contexte', error);
  }
  try {
    await rm(dir, { recursive: true, force: true });
  } catch (error) {
    remember('nettoyage artefact', error);
  }
  try {
    await browser.close();
  } catch (error) {
    remember('fermeture navigateur', error);
  }
}
if (failure) throw failure;

Le résultat attendu nomme le signal absent; il ne teste pas une autre origine. Une mutation expirée exige le statut du service.

Cadence de mise à jour

Un patch de sécurité peut être examiné plus vite qu’un changement majeur, mais chacun enregistre la version et exécute la fixture. Bloquez les dépendances flottantes et examinez leurs changements séparément.

Rollback et cadence

Le rollback restaure binaire, driver, framework, schéma et build. Répétez-le dans une lane jetable avec une baseline synthétique. Sans ancien binaire disponible, le release n’est pas prêt.

Un patch de sécurité peut être plus rapide qu’un changement majeur, mais chacun note la version et exécute la fixture. Bloquez les dépendances flottantes et examinez leurs mises à jour séparément.

Preuves et limites

Le reçu contient versions, image système, scénario, résultat visible, alternative et nettoyage. Il n’inclut ni cookies ni texte personnel. Le runner observe la frontière client et ne prouve pas la rétention serveur.

Capacité et limite BotBrowser

BotBrowser fournit une configuration contrôlée et des BrowserContexts isolés pour comparer des releases autorisés; voir la documentation d’isolement multi-compte. Il ne choisit pas les drivers, ne fixe pas les dépendances, ne certifie pas un build et ne garantit pas la parité entre systèmes.

BotBrowser prend en charge des entrées navigateur épinglées pour une comparaison contrôlée, mais ne garantit ni la compatibilité du driver, ni celle de l’application ou des systèmes.

Pour une release épinglée, BotBrowser peut garder la configuration navigateur stable pendant la comparaison, mais il ne décide pas de la compatibilité du driver ou du build.

Conservez le reçu baseline avec artefact, driver, lockfile, image et build.

Un patch peut modifier protocole, certificats, rendu ou politiques malgré son faible numéro.

Classez l’échec par frontière : lancement, permissions, résultat visible ou infrastructure.

Notez une décision explicite : promouvoir, retenir, rollback ou investiguer.

Répétez le rollback en vérifiant artefact, driver, schéma et parcours synthétique.

N’allongez pas les attentes pour cacher un drift de release.

Gardez route, données synthétiques, proxy et rétention constants.

Une exception de plateforme doit avoir lane, propriétaire et échéance.

Notez les dépendances que le runner ne peut pas épingler.

Conservez seulement métadonnées et artefacts synthétiques autorisés pendant la fenêtre.

Conservez les identifiants résolus pour reproduire le worker exact.

Comparez une seule entrée de release à la fois.

Séparez les artefacts candidats des artefacts de référence.

Une capacité manquante doit rester visible malgré une assertion verte.

Le statut du service est requis après un timeout qui a pu muter une donnée.

La fermeture du contexte ne prouve pas la suppression côté serveur.

Attribuez une échéance à toute exception de plateforme.

Réexécutez le parcours propre après une restauration.

Conservez les identifiants résolus pour reproduire le worker exact.

Comparez une seule entrée de release à la fois.

Séparez les artefacts candidats de la baseline.

Une capacité manquante reste visible malgré une assertion verte.

Consultez le service après un timeout qui a pu muter une donnée.

La fermeture du contexte ne prouve pas la suppression serveur.

Attribuez une échéance à chaque exception de plateforme.

Réexécutez le parcours propre après restauration.

Relisez le reçu avec le propriétaire du parcours.

Gardez la baseline immuable pendant la fenêtre.

Sources

#Automatisation Du Navigateur#Versions#Mises À Jour#Compatibilité#Rollback

Faites passer BotBrowser de la recherche à la production

Utilisez ces guides pour comprendre le modèle, puis passez à la validation multi-plateforme, aux contextes isolés et au déploiement navigateur prêt pour l'échelle.