update notes on permissions for recording
This commit is contained in:
@@ -1100,7 +1100,7 @@ interface StartRecordingParams {
|
|||||||
async function handleStartRecording(params: StartRecordingParams): Promise<{ success: true; tabId: number; startedAt: number } | { success: false; error: string }> {
|
async function handleStartRecording(params: StartRecordingParams): Promise<{ success: true; tabId: number; startedAt: number } | { success: false; error: string }> {
|
||||||
const tabId = resolveTabIdFromSessionId(params.sessionId)
|
const tabId = resolveTabIdFromSessionId(params.sessionId)
|
||||||
if (!tabId) {
|
if (!tabId) {
|
||||||
return { success: false, error: 'No connected tab found for recording' }
|
return { success: false, error: 'No connected tab found for recording. Click the Playwriter extension icon on the tab you want to record.' }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (activeRecordings.has(tabId)) {
|
if (activeRecordings.has(tabId)) {
|
||||||
@@ -1125,7 +1125,7 @@ async function handleStartRecording(params: StartRecordingParams): Promise<{ suc
|
|||||||
const errorMsg = chrome.runtime.lastError.message || 'Unknown error'
|
const errorMsg = chrome.runtime.lastError.message || 'Unknown error'
|
||||||
// Chrome returns this error when activeTab permission hasn't been granted
|
// Chrome returns this error when activeTab permission hasn't been granted
|
||||||
if (errorMsg.includes('Extension has not been invoked') || errorMsg.includes('activeTab')) {
|
if (errorMsg.includes('Extension has not been invoked') || errorMsg.includes('activeTab')) {
|
||||||
reject(new Error(`${errorMsg}. Toggle the Playwriter extension icon on this tab to enable recording, then try again.`))
|
reject(new Error(`${errorMsg}. Click the Playwriter extension icon on this tab to enable recording, then try again.`))
|
||||||
} else {
|
} else {
|
||||||
reject(new Error(errorMsg))
|
reject(new Error(errorMsg))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -601,6 +601,9 @@ export class PlaywrightExecutor {
|
|||||||
audio?: boolean
|
audio?: boolean
|
||||||
outputPath: string
|
outputPath: string
|
||||||
}) => {
|
}) => {
|
||||||
|
// Recording uses chrome.tabCapture which requires activeTab permission.
|
||||||
|
// This permission is granted when the user clicks the Playwriter extension icon on a tab.
|
||||||
|
// Recording will work on any tab where the user has clicked the icon.
|
||||||
return startRecording({
|
return startRecording({
|
||||||
page: options.page || page,
|
page: options.page || page,
|
||||||
relayPort,
|
relayPort,
|
||||||
|
|||||||
@@ -423,7 +423,7 @@ Labels are color-coded: yellow=links, orange=buttons, coral=inputs, pink=checkbo
|
|||||||
|
|
||||||
**startRecording / stopRecording** - record the page as a video at native FPS (30-60fps). Uses `chrome.tabCapture` in the extension context, so **recording survives page navigation**. Video is saved as WebM.
|
**startRecording / stopRecording** - record the page as a video at native FPS (30-60fps). Uses `chrome.tabCapture` in the extension context, so **recording survives page navigation**. Video is saved as WebM.
|
||||||
|
|
||||||
**Important**: Recording requires the user to have clicked the playwriter extension icon on the target tab first. This grants the `activeTab` permission which is required for `chrome.tabCapture`. If recording fails with "Extension has not been invoked for the current page", ask the user to click the extension icon on the tab they want to record.
|
**Note**: Recording requires the user to have clicked the Playwriter extension icon on the tab. This grants `activeTab` permission needed for `chrome.tabCapture`. Recording works on tabs where the icon was clicked - if you need to record a new tab, ask the user to click the icon on it first.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
// Start recording - outputPath must be specified upfront
|
// Start recording - outputPath must be specified upfront
|
||||||
|
|||||||
Reference in New Issue
Block a user