説明
chrome.devtools.recorder API を使用して、DevTools の [Recorder] パネルをカスタマイズします。
devtools.recorder API は、Chrome DevTools の [Recorder パネル] を拡張できるプレビュー機能です。
デベロッパー ツール API の使用方法の概要については、DevTools API の概要をご覧ください。
対象
コンセプトと使用方法
エクスポート機能のカスタマイズ
拡張機能プラグインを登録するには、registerRecorderExtensionPlugin 関数を使用します。この関数には、パラメータとしてプラグイン インスタンス(name と mediaType)が必要です。プラグイン インスタンスは、stringify と stringifyStep の 2 つのメソッドを実装する必要があります。
拡張機能によって提供される name は、[Recorder] パネルの [Export] メニューに表示されます。
エクスポートのコンテキストによっては、ユーザーが拡張機能が提供するエクスポート オプションをクリックすると、 [Recorder] パネルでは、次の 2 つの関数のいずれかを呼び出します。
- ユーザーフロー全体の記録を受け取る stringify
- stringifyStep: 単一の記録されたステップを受け取る
mediaType パラメータを使用すると、拡張機能が
stringify 関数と stringifyStep 関数。たとえば、結果が JavaScript の場合は application/javascript
。
リプレイボタンをカスタマイズする
レコーダーのリプレイ ボタンをカスタマイズするには、registerRecorderExtensionPlugin 関数を使用します。カスタマイズを有効にするには、プラグインに replay メソッドを実装する必要があります。 
メソッドが検出されると、リプレイボタンがレコーダーに表示されます。 
ボタンをクリックすると、現在の録画オブジェクトが replay メソッドの最初の引数として渡されます。
この時点で、拡張機能はリプレイを処理するために RecorderView を表示するか、他の拡張機能 API を使用してリプレイ リクエストを処理できます。新しい RecorderView を作成するには、chrome.devtools.recorder.createView を呼び出します。
例
エクスポート プラグイン
次のコードは、JSON.stringify を使用して録音を文字列化する拡張機能プラグインを実装しています。
class MyPlugin {
  stringify(recording) {
    return Promise.resolve(JSON.stringify(recording));
  }
  stringifyStep(step) {
    return Promise.resolve(JSON.stringify(step));
  }
}
chrome.devtools.recorder.registerRecorderExtensionPlugin(
  new MyPlugin(),
  /*name=*/'MyPlugin',
  /*mediaType=*/'application/json'
);
リプレイ プラグイン
次のコードは、ダミーのレコーダー ビューを作成してリプレイ リクエスト時に表示する拡張機能プラグインを実装しています。
const view = await chrome.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.
  chrome.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();
  }
}
chrome.devtools.recorder.registerRecorderExtensionPlugin(
  new RecorderPlugin(),
  /* name=*/ 'CoffeeTest'
);
GitHub で拡張機能の完全なサンプルを確認する。
型
RecorderExtensionPlugin
[Recorder] パネルをカスタマイズするために [Recorder] パネルが呼び出すプラグイン インターフェース。
プロパティ
- 
    もう一回見るvoid Chrome 112 以降カスタム リプレイ機能を実装できるようにします。 replay関数は次のようになります。(recording: object) => {...} - 
    録画中オブジェクト ページでのユーザー操作の記録。これは Puppeteer の記録スキーマと一致する必要があります。 
 
- 
    
- 
    Stringifyvoid [レコーダー] パネルの録音を文字列に変換します。 stringify関数は次のようになります。(recording: object) => {...} - 
    録画中オブジェクト ページでのユーザー操作の記録。これは Puppeteer の記録スキーマと一致する必要があります。 
 
- 
    
- 
    stringifyStepvoid [Recorder] パネルの録音のステップを文字列に変換します。 stringifyStep関数は次のようになります。(step: object) => {...} - 
    ステップオブジェクト ページでのユーザー インタラクションを記録するステップ。これは Puppeteer のステップ スキーマと一致する必要があります。 
 
- 
    
RecorderView
拡張機能によって作成されたビューを表し、レコーダー パネル内に埋め込まれます。
プロパティ
- 
    onHiddenEvent<functionvoidvoid> ビューが非表示になると呼び出されます。 onHidden.addListener関数は次のようになります。(callback: function) => {...} - 
    callback関数 callbackパラメータは次のようになります。() => void 
 
- 
    
- 
    onShownEvent<functionvoidvoid> ビューが表示されたときに呼び出されます。 onShown.addListener関数は次のようになります。(callback: function) => {...} - 
    callback関数 callbackパラメータは次のようになります。() => void 
 
- 
    
- 
    表示するvoid 拡張機能がこのビューをレコーダー パネルに表示することを示します。 show関数は次のようになります。() => {...}
メソッド
createView()
chrome.devtools.recorder.createView(
title: string,
pagePath: string,
): RecorderView
リプレイを処理できるビューを作成します。このビューは、[Recorder] パネル内に埋め込まれます。
パラメータ
- 
    title文字列 デベロッパー ツール ツールバーの拡張機能アイコンの横に表示されるタイトル。 
- 
    pagePath文字列 拡張機能ディレクトリに対するパネルの HTML ページの相対パス。 
戻り値
registerRecorderExtensionPlugin()
chrome.devtools.recorder.registerRecorderExtensionPlugin(
plugin: RecorderExtensionPlugin,
name: string,
mediaType: string,
): void
レコーダー拡張機能プラグインを登録します。
パラメータ
- 
    pluginRecorderExtensionPlugin インターフェースを実装するインスタンス。 
- 
    name文字列 プラグインの名前。 
- 
    mediaType文字列 プラグインが生成する文字列コンテンツのメディアタイプ。