browser.devtools.recorder

Description

Utilisez l'API chrome.devtools.recorder pour personnaliser le panneau "Enregistreur" dans les outils de développement.

L'API devtools.recorder est une fonctionnalité en preview qui vous permet d'étendre le panneau "Enregistreur" dans les outils pour les développeurs Chrome.

Pour obtenir une introduction générale à l'utilisation des API DevTools, consultez Résumé des API DevTools.

Disponibilité

Chrome 105 et versions ultérieures

Concepts et utilisation

Personnaliser la fonctionnalité d'exportation

Pour enregistrer un plug-in d'extension, utilisez la fonction registerRecorderExtensionPlugin. Cette fonction nécessite une instance de plug-in, un name et un mediaType en tant que paramètres. L'instance du plug-in doit implémenter deux méthodes : stringify et stringifyStep.

Le name fourni par l'extension s'affiche dans le menu Exporter du panneau Enregistreur.

Selon le contexte d'exportation, lorsque l'utilisateur clique sur l'option d'exportation fournie par l'extension, le panneau Enregistreur appelle l'une des deux fonctions suivantes :

Le paramètre mediaType permet à l'extension de spécifier le type de résultat qu'elle génère avec les fonctions stringify et stringifyStep. Par exemple, application/javascript si le résultat est un programme JavaScript.

Personnaliser le bouton de relecture

Pour personnaliser le bouton de relecture dans l'enregistreur, utilisez la fonction registerRecorderExtensionPlugin. Le plug-in doit implémenter la méthode replay pour que la personnalisation prenne effet. Si la méthode est détectée, un bouton de relecture s'affiche dans l'onglet Enregistreur. Lorsque vous cliquez sur le bouton, l'objet d'enregistrement actuel est transmis en tant que premier argument à la méthode replay.

À ce stade, l'extension peut afficher un RecorderView pour gérer la rediffusion ou utiliser d'autres API d'extension pour traiter la demande de rediffusion. Pour créer un RecorderView, appelez browser.devtools.recorder.createView.

Exemples

Plug-in d'exportation

Le code suivant implémente un plug-in d'extension qui transforme un enregistrement en chaîne à l'aide de JSON.stringify :

class MyPlugin {
  stringify(recording) {
    return Promise.resolve(JSON.stringify(recording));
  }
  stringifyStep(step) {
    return Promise.resolve(JSON.stringify(step));
  }
}

browser.devtools.recorder.registerRecorderExtensionPlugin(
  new MyPlugin(),
  /*name=*/'MyPlugin',
  /*mediaType=*/'application/json'
);

Plug-in Revoir

Le code suivant implémente un plug-in d'extension qui crée une vue Recorder factice et l'affiche lors d'une demande de relecture :

const view = await browser.devtools.recorder.createView(
  /* name= */ 'ExtensionName',
  /* pagePath= */ 'Replay.html'
);

let latestRecording;

view.onShown.addListener(() => {
  // Recorder has shown the view. Send additional data to the view if needed.
  browser.runtime.sendMessage(JSON.stringify(latestRecording));
});

view.onHidden.addListener(() => {
  // Recorder has hidden the view.
});

export class RecorderPlugin {
  replay(recording) {
    // Share the data with the view.
    latestRecording = recording;
    // Request to show the view.
    view.show();
  }
}

browser.devtools.recorder.registerRecorderExtensionPlugin(
  new RecorderPlugin(),
  /* name=*/ 'CoffeeTest'
);

Retrouvez un exemple d'extension complet sur GitHub.

Types

RecorderExtensionPlugin

Interface de plug-in que le panneau "Enregistreur" appelle pour personnaliser le panneau "Enregistreur".

Propriétés

  • revoir

    vide

    Chrome 112 et versions ultérieures

    Permet à l'extension d'implémenter une fonctionnalité de relecture personnalisée.

    La fonction replay se présente comme suit :

    (recording: object) => {...}

  • stringify

    vide

    Convertit un enregistrement du format du panneau "Enregistreur" en chaîne.

    La fonction stringify se présente comme suit :

    (recording: object) => {...}

  • stringifyStep

    vide

    Convertit une étape de l'enregistrement du format du panneau "Enregistreur" en chaîne.

    La fonction stringifyStep se présente comme suit :

    (step: object) => {...}

    • étape

      objet

      Étape de l'enregistrement d'une interaction de l'utilisateur avec la page. Il doit correspondre au schéma d'étape de Puppeteer.

RecorderView

Chrome 112 et versions ultérieures

Représente une vue créée par une extension à intégrer dans le panneau "Enregistreur".

Propriétés

  • onHidden

    Event<functionvoidvoid>

    Déclenché lorsque la vue est masquée.

    La fonction onHidden.addListener se présente comme suit :

    (callback: function) => {...}

    • callback

      fonction

      Le paramètre callback se présente comme suit :

      () => void

  • onShown

    Event<functionvoidvoid>

    Déclenché lorsque la vue est affichée.

    La fonction onShown.addListener se présente comme suit :

    (callback: function) => {...}

    • callback

      fonction

      Le paramètre callback se présente comme suit :

      () => void

  • afficher

    vide

    Indique que l'extension souhaite afficher cette vue dans le panneau de l'enregistreur.

    La fonction show se présente comme suit :

    () => {...}

Méthodes

createView()

Chrome 112 et versions ultérieures
chrome.devtools.recorder.createView(
  title: string,
  pagePath: string,
)
: RecorderView

Crée une vue qui peut gérer la rediffusion. Cette vue sera intégrée au panneau "Enregistreur".

Paramètres

  • titre

    chaîne

    Titre affiché à côté de l'icône de l'extension dans la barre d'outils des outils pour les développeurs.

  • pagePath

    chaîne

    Chemin d'accès à la page HTML du panneau par rapport au répertoire de l'extension.

Renvoie

registerRecorderExtensionPlugin()

chrome.devtools.recorder.registerRecorderExtensionPlugin(
  plugin: RecorderExtensionPlugin,
  name: string,
  mediaType: string,
)
: void

Enregistre un plug-in d'extension de l'Enregistreur.

Paramètres

  • Instance implémentant l'interface RecorderExtensionPlugin.

  • nom

    chaîne

    Nom du plug-in.

  • mediaType

    chaîne

    Type de contenu de la chaîne que le plug-in produit.