upgrade-browser

Mettre à jour les versions du navigateur (Chrome ou Firefox) dans les tests du Flutter Web Engine et/ou Framework. Utiliser lorsqu'il est demandé de faire évoluer ou mettre à niveau Chrome ou Firefox vers une version plus récente…

npx skills add https://github.com/flutter/flutter --skill upgrade-browser

Upgrade Browser

This skill automates the process of upgrading Chrome and Firefox versions in the Flutter Web Engine and the Framework tests.

Workflow

1. Identify and Verify the New Version

Before updating any files, find and verify the existence of the version you want to use.

  • To find the latest stable version:
    dart scripts/fetch_versions.dart latest <chrome|firefox>
    
  • To verify a specific version exists:
    dart scripts/fetch_versions.dart verify <chrome|firefox> <version>
    
    This command will return true or false.

Verification Rules:

  • Enforced by default: If the command returns false, do not proceed.
  • Optional if requested: If the user explicitly asks to skip verification (e.g., "Upgrade to version X without verification"), you may skip this step.
  • Failed verification: If verification fails but the user confirms they want to proceed anyway, you may continue.

2. Update Local Files

The user may request to upgrade one or both locations. They may also use different versions for each location.

Flutter Web Engine (engine/src/flutter/lib/web_ui/dev/package_lock.yaml)

Update the version field for chrome or firefox.

chrome:
  version: 'NEW_VERSION'

firefox:
  version: 'NEW_VERSION'

Framework Tests (.ci.yaml)

Update all occurrences of chrome_and_driver with the new version.

- {"dependency": "chrome_and_driver", "version": "version:NEW_VERSION"}

Use replace with allow_multiple: true to ensure all instances are updated. Note: Currently, only Chrome is managed this way in .ci.yaml.

3. CI Config Sync

After updating the browser versions, synchronize the CI configurations. This step updates engine/src/flutter/ci/builders/linux_web_engine_test.json.

Only run this once. To verify if it needs to run, check the modification time of the file:

ls -l engine/src/flutter/ci/builders/linux_web_engine_test.json

From engine/src/flutter/lib/web_ui, run:

dev/felt generate-builder-json

Validation: Confirm the file engine/src/flutter/ci/builders/linux_web_engine_test.json has a new timestamp after the command finishes.

4. Local Verification

Before uploading to CIPD, run tests locally to ensure no regressions. From engine/src/flutter/lib/web_ui, run:

dev/felt test

Note: You can use --browser <chrome|firefox> to limit the scope.

5. CIPD Upload (Package Roller)

This is the final step as it uploads binaries to CIPD and requires special, temporary permissions.

  1. Ask the user if they have the necessary CIPD permissions (contact #hackers-infra on Discord if unsure).
  2. If confirmed, from engine/src/flutter/lib/web_ui, run:
    dart dev/package_roller.dart
    
    Note: Use --dry-run if the user wants to test first.

Examples

  • User: "Upgrade Chrome and Firefox to the latest stable versions everywhere."

  • Agent:

    1. Runs dart scripts/fetch_versions.dart latest to get the latest versions.
    2. Updates engine/src/flutter/lib/web_ui/dev/package_lock.yaml and .ci.yaml.
    3. Runs dev/felt generate-builder-json to sync CI configs.
    4. Suggests running local tests.
    5. Finally, asks about CIPD permissions.
  • User: "Roll Chrome to version 135.0.0.0 everywhere. Skip verification."

  • Agent:

    1. Skips dart scripts/fetch_versions.dart verify because the user requested it.
    2. Updates package_lock.yaml and .ci.yaml directly with 135.0.0.0.
    3. Follows the rest of the workflow (Sync, Test, CIPD).
  • User: "Update Firefox in the web engine to 130.0."

  • Agent:

    1. Verifies version 130.0 for Firefox using dart scripts/fetch_versions.dart verify firefox 130.0.
    2. If verification fails, informs the user: "I was unable to verify Firefox version 130.0 through Mozilla's official release history. Are you sure this is the correct version number?"
    3. If user confirms or verification succeeds, updates package_lock.yaml.
    4. Follows the rest of the workflow (Sync, Test, CIPD).

Plus de skills de flutter

dart-modern-features
flutter
Pour trouver des candidats à la modernisation :
flutter-fix-layout-issues
flutter
Corrige les erreurs de mise en page Flutter (débordements, contraintes illimitées) à l'aide des outils Dart et Flutter MCP. À utiliser pour résoudre les messages « RenderFlex overflowed », « Vertical…
adding-release-notes
flutter
Ajoute des descriptions de changements destinés aux utilisateurs dans les notes de version de DevTools. À utiliser pour documenter les améliorations, correctifs ou nouvelles fonctionnalités dans le fichier NEXT_RELEASE_NOTES.md.
reviewing-devtools-prs
flutter
Workflow de revue de PR spécifique au dépôt DevTools, appliquant les directives de style DevTools et les modèles de revue courants. À utiliser lors de la revue de pull requests dans le…
dart-use-primary-constructors
flutter
Aider les utilisateurs à écrire des constructeurs principaux syntaxiquement et sémantiquement corrects en Dart, et migrer/utiliser la nouvelle syntaxe de constructeur, la syntaxe de point-virgule à corps vide,…
code-documentation
flutter
Guide pour rédiger une documentation de code efficace, incluant les docstrings, JSDoc, dartdoc et les commentaires d'implémentation. Utilisez cette compétence lors de l'écriture de nouveau code, de l'ajout…
api-review
flutter
Examine le code spécifié par rapport aux directives canoniques de conception d'API. Utilisez cette compétence lorsque l'utilisateur demande une revue d'API ou souhaite vérifier que le code respecte la conception d'API…
flutter-accessibility
flutter
Implémente les normes d'accessibilité WCAG 2 et EN 301 549 ainsi que les mises en page adaptatives dans les applications Flutter. Applique les annotations sémantiques, les tailles de cible tactile (48x48 dp minimum) et les ratios de contraste de texte (4,5:1 pour le petit texte, 3:1 pour le grand texte) sur les plateformes mobiles, web et de bureau. Fournit une logique décisionnelle pour l'initialisation de la sémantique web, l'encapsulation de widgets interactifs, le changement de mise en page basé sur la taille d'écran et la gestion des entrées clavier/souris. Inclut la gestion du parcours de focus via FocusTraversalGroup et...