FIX this errors:'0 verbose cli C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js
1 info using npm@11.3.0
2 info using node@v24.1.0
3 silly config load:file:C:\Program Files\nodejs\node_modules\npm\npmrc
4 silly config load:file:C:\Users\WDAGUtilityAccount\.npmrc
5 silly config load:file:C:\Users\WDAGUtilityAccount\AppData\Roaming\npm\etc\npmrc
6 verbose title npm exec install chromium --with-deps
7 verbose argv "exec" "--" "install" "chromium" "--with-deps"
8 verbose logfile logs-max:10 dir:C:\Users\WDAGUtilityAccount\AppData\Local\npm-cache\_logs\2025-05-27T15_28_20_055Z-
9 verbose logfile C:\Users\WDAGUtilityAccount\AppData\Local\npm-cache\_logs\2025-05-27T15_28_20_055Z-debug-0.log
10 silly logfile done cleaning log files
11 silly packumentCache heap:2348285952 maxSize:587071488 maxEntrySize:293535744
12 http fetch GET 200 https://registry.npmjs.org/install 1206ms (cache revalidated)
13 verbose stack Error: could not determine executable to run
13 verbose stack     at getBinFromManifest (C:\Program Files\nodejs\node_modules\npm\node_modules\libnpmexec\lib\get-bin-from-manifest.js:17:23)
13 verbose stack     at exec (C:\Program Files\nodejs\node_modules\npm\node_modules\libnpmexec\lib\index.js:205:15)
13 verbose stack     at async Npm.exec (C:\Program Files\nodejs\node_modules\npm\lib\npm.js:208:9)
13 verbose stack     at async module.exports (C:\Program Files\nodejs\node_modules\npm\lib\cli\entry.js:67:5)
14 verbose pkgid install@0.13.0
15 error could not determine executable to run
16 verbose cwd C:\Users\WDAGUtilityAccount
17 verbose os Windows_NT 10.0.26100
18 verbose node v24.1.0
19 verbose npm  v11.3.0
20 verbose exit 1
21 verbose code 1
22 error A complete log of this run can be found in: C:\Users\WDAGUtilityAccount\AppData\Local\npm-cache\_logs\2025-05-27T15_28_20_055Z-debug-0.log
'

in this powershell  script.'<#
.SYNOPSIS
Installs Playwright browsers to a custom directory and provides configuration details.

.DESCRIPTION
This script installs Playwright browsers to a specified directory, sets the appropriate environment variables,
and provides instructions for using the custom browser path in your Playwright scripts.

.NOTES
File Name      : Install-PlaywrightBrowser.ps1
Author         : Your Name
Prerequisite   : Node.js and npm must be installed
#>


function Write-Status {
    param (
        [string]$Message,
        [string]$Color = "White"
    )
    Write-Host "[$(Get-Date -Format 'HH:mm:ss')] $Message" -ForegroundColor $Color
}

function Write-ErrorMessage {
    param (
        [string]$Message
    )
    Write-Host "`n[ERROR] $Message" -ForegroundColor Red
}

function Write-SuccessMessage {
    param (
        [string]$Message
    )
    Write-Host "`n[SUCCESS] $Message" -ForegroundColor Green
}

function Pause-Script {
    Write-Host "`nPress any key to exit..." -ForegroundColor Cyan
    $null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
}

# Set strict mode for better error handling
Set-StrictMode -Version Latest

# --- Configuration ---
$PlaywrightBrowsersRoot = "C:\Megacine\playwright"
$TargetBrowser = "chromium" # Options: "chromium", "firefox", "webkit", or "all"
$NpxPath = "C:\Program Files\nodejs\npx.ps1" # Full path to npx

# --- Script Start ---
Write-Host "`n=== Playwright Custom Browser Installation Script ===" -ForegroundColor Cyan
Write-Host "This script will install Playwright browsers to: $PlaywrightBrowsersRoot`n"

# 1. Check for npm
Write-Status "Checking for npm..." -Color Yellow
try {
    $npmVersion = & "$env:ProgramFiles\nodejs\npm.cmd" --version 2>$null
    if (-not $npmVersion) {
        throw "npm not found"
    }
    Write-SuccessMessage "npm found (version: $npmVersion)"
} catch {
    Write-ErrorMessage "npm is not found. Please install Node.js (which includes npm): https://nodejs.org/"
    Pause-Script
    exit 1
}

# 2. Ensure target directory exists
Write-Status "Ensuring target directory exists: $PlaywrightBrowsersRoot" -Color Yellow
try {
    $directoryInfo = New-Item -ItemType Directory -Force -Path $PlaywrightBrowsersRoot -ErrorAction Stop
    Write-SuccessMessage "Target directory is ready: $($directoryInfo.FullName)"
} catch {
    Write-ErrorMessage "Failed to create or access directory '$PlaywrightBrowsersRoot'."
    Write-ErrorMessage $_.Exception.Message
    Pause-Script
    exit 1
}

# 3. Set the PLAYWRIGHT_BROWSERS_PATH env variable
$OriginalPlaywrightBrowsersPath = $env:PLAYWRIGHT_BROWSERS_PATH
$env:PLAYWRIGHT_BROWSERS_PATH = $PlaywrightBrowsersRoot
Write-Status "Set PLAYWRIGHT_BROWSERS_PATH for this session: $PlaywrightBrowsersRoot" -Color Yellow

# 4. Install Playwright browser with proper execution handling
Write-Status "Running Playwright installation..." -Color Yellow

try {
    # Use PowerShell with Bypass to run npx
    $installCommand = "powershell -ExecutionPolicy Bypass -File `"$NpxPath`" install $TargetBrowser --with-deps"
    Write-Status "Executing: $installCommand" -Color Gray

    $processInfo = New-Object System.Diagnostics.ProcessStartInfo
    $processInfo.FileName = "powershell"
    $processInfo.Arguments = "-ExecutionPolicy Bypass -Command `"& '$NpxPath' install $TargetBrowser --with-deps`""
    $processInfo.RedirectStandardOutput = $true
    $processInfo.RedirectStandardError = $true
    $processInfo.UseShellExecute = $false
    $processInfo.CreateNoWindow = $true

    $process = [System.Diagnostics.Process]::Start($processInfo)
    $output = $process.StandardOutput.ReadToEnd()
    $processErrorOutput = $process.StandardError.ReadToEnd() # Renamed variable
    $process.WaitForExit()

    Write-Host $output

     if ($process.ExitCode -eq 0) {
        Write-SuccessMessage "Playwright browser installation finished successfully."
        if ($processErrorOutput) {
            Write-Status "Standard Error Output (though process exited successfully):" -Color Yellow
            Write-Host $processErrorOutput -ForegroundColor Yellow
        }
    } else {
        Write-ErrorMessage "Playwright browser installation failed with exit code $($process.ExitCode)."
        if ($processErrorOutput) {
            Write-ErrorMessage "Error Details: $processErrorOutput"
        } else {
            Write-ErrorMessage "No specific error details captured on stderr. Check output above."
        }
        Pause-Script
        exit 1
    }
} catch {
    Write-ErrorMessage "An error occurred during Playwright installation:"
    Write-ErrorMessage $_.Exception.Message
    Pause-Script
    exit 1
} finally {
    # Restore original env variable
    if ($null -eq $OriginalPlaywrightBrowsersPath) {
        Remove-Item Env:\PLAYWRIGHT_BROWSERS_PATH -ErrorAction SilentlyContinue
        Write-Status "Removed PLAYWRIGHT_BROWSERS_PATH environment variable" -Color Gray
    } else {
        $env:PLAYWRIGHT_BROWSERS_PATH = $OriginalPlaywrightBrowsersPath
        Write-Status "Restored original PLAYWRIGHT_BROWSERS_PATH" -Color Gray
    }
}

# 5. Verify installation
Write-Status "Verifying installation..." -Color Yellow

try {
    $browserDir = Get-ChildItem -Path $PlaywrightBrowsersRoot -Filter "$TargetBrowser-*" -Directory -ErrorAction Stop |
                 Sort-Object LastWriteTime -Descending | Select-Object -First 1

    if ($null -eq $browserDir) {
        throw "Browser directory not found"
    }

    $expectedExePath = Join-Path $browserDir.FullName "$TargetBrowser-win\$TargetBrowser.exe"
    if (-not (Test-Path $expectedExePath)) {
        throw "Browser executable not found at expected path"
    }

    Write-SuccessMessage "$TargetBrowser has been installed successfully."
    Write-Host "`nBrowser executable found at:" -ForegroundColor Cyan
    Write-Host $expectedExePath -ForegroundColor Yellow

    # Provide code examples
    Write-Host "`nTo use this browser in your Playwright scripts:" -ForegroundColor Cyan
    Write-Host "`nFor PowerShell:" -ForegroundColor Green
    Write-Host "`$env:PLAYWRIGHT_BROWSERS_PATH = '$PlaywrightBrowsersRoot'" -ForegroundColor Yellow

    Write-Host "`nFor JavaScript/Node.js:" -ForegroundColor Green
    Write-Host "const { $TargetBrowser } = require('playwright');" -ForegroundColor Yellow
    Write-Host "const browser = await $TargetBrowser.launch({ executablePath: '$expectedExePath' });" -ForegroundColor Yellow

    Write-Host "`nFor Python:" -ForegroundColor Green
    Write-Host "from playwright.sync_api import sync_playwright" -ForegroundColor Yellow
    Write-Host "with sync_playwright() as p:" -ForegroundColor Yellow
    Write-Host "    browser = p.$TargetBrowser.launch(executable_path='$expectedExePath')" -ForegroundColor Yellow

} catch {
    Write-ErrorMessage "Verification failed: $($_.Exception.Message)"
    Write-ErrorMessage "Expected to find $TargetBrowser executable in: $PlaywrightBrowsersRoot"
    Pause-Script
    exit 1
}

# 6. Final instructions
Write-Host "`n=== Installation Complete ===" -ForegroundColor Cyan
Write-Host "To use this custom browser path:" -ForegroundColor Cyan
Write-Host "1. Set the environment variable before running Playwright:" -ForegroundColor Green
Write-Host "   `$env:PLAYWRIGHT_BROWSERS_PATH = '$PlaywrightBrowsersRoot'" -ForegroundColor Yellow
Write-Host "`n2. Or specify the executable path directly in your code as shown above." -ForegroundColor Green
Write-Host "`nFor more information: https://playwright.dev/docs/browsers#custom-browsers-folder" -ForegroundColor Gray

Pause-Script'