Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conflict Between Multiple Instances of wppconnect-server in Docker Swarm or Docker Container standalone #2056

Open
g-roliveira opened this issue Oct 25, 2024 · 0 comments
Labels
bug Something isn't working needs triage

Comments

@g-roliveira
Copy link

g-roliveira commented Oct 25, 2024

[en] Description

I'm experiencing an issue running multiple instances of the wppconnect-server in a Docker Swarm setup. When attempting to launch a new stack (e.g., homologacao) alongside the production stack, Puppeteer/Chromium fails to initialize properly, causing a direct conflict between instances, which seem to interfere with each other despite being isolated. This behavior occurs only within container environments.

The problem was identified while debugging an attachment upload limit (restricted to 60MB). This issue remains unresolved and will be reported separately.

[pt-br] Descrição

Estou enfrentando um problema ao executar múltiplas instâncias do wppconnect-server em uma configuração de Docker Swarm. Quando tento subir uma nova stack (por exemplo, homologacao) além da stack de produção, o Puppeteer/Chromium não consegue inicializar corretamente, causando um conflito direto entre as instâncias que, apesar de isoladas, parecem interferir uma com a outra. Esse comportamento é específico para containers e não ocorre fora desse ambiente.

O problema foi identificado durante a tentativa de debugar uma limitação no envio de anexos, que está restrito a 60MB. Este problema ainda não foi resolvido, mas será reportado separadamente.


[en] Environment

  • Wppconnect-server version(s): [2.7.0]
  • Browser: [Chromium 130.0.6723.58 Alpine Linux]
  • OS: [Alpine Linux v3.20(container)]
  • Node version: [v20.18.0]
  • WhatsApp version: [2.3000.10162x]
  • MultiDevice (BETA): no
  • config.json:

[pt-br] Ambiente

  • Versão do Wppconnect-server: [2.7.0]
  • Navegador: [Chromium 130.0.6723.58 Alpine Linux]
  • SO: [Alpine Linux v3.20(container)]
  • Versão do Node: [v20.18.0]
  • Versão do WhatsApp: [2.3000.10162x]
  • MultiDevice (BETA): no
  • config.json:
{
  "secretKey": "my_key",
  "host": "http://localhost",
  "port": "21465",
  "deviceName": "WppConnect",
  "poweredBy": "WPPConnect-Server",
  "startAllSession": true,
  "tokenStoreType": "file",
  "maxListeners": 15,
  "customUserDataDir": "./userDataDir/",
  "webhook": {
    "url": null,
    "autoDownload": true,
    "uploadS3": false,
    "readMessage": false,
    "allUnreadOnStart": false,
    "listenAcks": true,
    "onPresenceChanged": false,
    "onParticipantsChanged": false,
    "onReactionMessage": true,
    "onPollResponse": false,
    "onRevokedMessage": false,
    "onLabelUpdated": false,
    "onSelfMessage": false,
    "ignore": ["status@broadcast"]
  },
  "websocket": {
    "autoDownload": false,
    "uploadS3": false
  },
  "chatwoot": {
    "sendQrCode": true,
    "sendStatus": true
  },
  "archive": {
    "enable": false,
    "waitTime": 10,
    "daysToArchive": 45
  },
  "log": {
    "level": "silly",
    "logger": ["console", "file"]
  },
  "createOptions": {
    "browserArgs": [
      "--disable-web-security",
      "--no-sandbox",
      "--disable-web-security",
      "--aggressive-cache-discard",
      "--disable-cache",
      "--disable-application-cache",
      "--disable-offline-load-stale-cache",
      "--disk-cache-size=0",
      "--disable-background-networking",
      "--disable-default-apps",
      "--disable-extensions",
      "--disable-sync",
      "--disable-translate",
      "--hide-scrollbars",
      "--metrics-recording-only",
      "--mute-audio",
      "--no-first-run",
      "--safebrowsing-disable-auto-update",
      "--ignore-certificate-errors",
      "--ignore-ssl-errors",
      "--ignore-certificate-errors-spki-list",
      "--remote-debugging-port=9277",
      "--remote-debugging-address=0.0.0.0"
    ],
    "puppeteerOptions": {
      "devtools": true,
      "dumpio": true,
      "protocolTimeout": 60000
    }
  },
  "mapper": {
    "enable": false,
    "prefix": "tagone-"
  },
  "db": {
    "mongodbDatabase": "tokens",
    "mongodbCollection": "",
    "mongodbUser": "",
    "mongodbPassword": "",
    "mongodbHost": "",
    "mongoIsRemote": true,
    "mongoURLRemote": "",
    "mongodbPort": 27017,
    "redisHost": "localhost",
    "redisPort": 6379,
    "redisPassword": "",
    "redisDb": 0,
    "redisPrefix": "docker"
  },
  "aws_s3": {
    "region": "sa-east-1",
    "access_key_id": null,
    "secret_key": null,
    "defaultBucketName": null,
    "endpoint": null,
    "forcePathStyle": null
  }
}

[en] Steps to Reproduce

  1. Configure a stack for wppconnect-server in Docker Swarm (e.g., production).
  2. Run the service, which will work as expected.
  3. Try launching a second stack (e.g., for homologation).
  4. Observe that Puppeteer/Chromium fails to initialize, showing errors related to ProtocolError and Network.enable.

Note: If the developer does not have access to a Docker Swarm environment, they can reproduce the issue using Docker Standalone by running two containers on different ports. This setup will also demonstrate the same behavior. Below is the Dockerfile I am using, which has been optimized to utilize three stages, unlike the example Dockerfile from the repository. This Dockerfile prepares the production-ready application with only the necessary production dependencies.

[pt-br] Passos para Reproduzir

  1. Configure uma stack para o wppconnect-server em Docker Swarm (por exemplo, para produção).
  2. Execute o serviço, que funcionará conforme o esperado.
  3. Tente iniciar uma segunda stack (por exemplo, para homologação).
  4. Observe que o Puppeteer/Chromium não inicializa corretamente, exibindo logs de erro relacionados a ProtocolError e Network.enable.

Observação: Caso o desenvolvedor não tenha acesso a um ambiente Docker Swarm, ele pode reproduzir o problema usando Docker Standalone, subindo dois containers em portas diferentes. Essa configuração também apresentará o mesmo comportamento. Abaixo está o Dockerfile que estou utilizando, otimizado para utilizar três estágios, diferente do Dockerfile de exemplo no repositório. Esse Dockerfile prepara a aplicação para produção com apenas as dependências necessárias.

# Estágio 1: Dependências base com cache
FROM node:lts-alpine3.20 AS base
WORKDIR /usr/src/wpp-server
COPY package.json yarn.lock ./

# Instalar dependências do sistema e cachear
RUN --mount=type=cache,target=.cache \
    apk add --no-cache \
    vips-dev \
    fftw-dev \
    libc6-compat

# Instalar dependências do Node.js (remover o mount temporariamente para testar)
RUN yarn install --production --pure-lockfile && \
    yarn cache clean

# Estágio 2: Build com ferramentas de compilação
FROM base AS build
# Instalar ferramentas de compilação e dependências
RUN apk add --no-cache \
    gcc \
    g++ \
    make \
    python3

COPY . .
RUN yarn install --production=false --pure-lockfile && \
    yarn build && \
    yarn cache clean

# Estágio 3: Imagem final
FROM node:lts-alpine3.20
WORKDIR /usr/src/wpp-server
ENV NODE_ENV=production

# Instalar dependências de runtime e Chromium
RUN apk add --no-cache \
    vips-dev \
    fftw-dev \
    libc6-compat \
    chromium

# Copiar as dependências e artefatos do build
COPY --from=base /usr/src/wpp-server/node_modules ./node_modules
COPY --from=build /usr/src/wpp-server/dist ./dist
COPY package.json ./

EXPOSE 21465
ENTRYPOINT ["node", "dist/server.js"]

Note: The standard Dockerfile in the repository uses a Multi-Stage build, but it currently includes development dependencies in the production stage, resulting in an image size of approximately 3GB. I have reorganized the Dockerfile to avoid this issue by ensuring that only production dependencies, libraries, and the compiled code are carried over to the production stage. Additionally, this requires adjustments in the package.json file, specifically moving the runtime dependencies, @babel/runtime and prom-client, from devDependencies to dependencies. These changes are necessary if my Dockerfile is used to test the environment, as these runtime dependencies are missing in the official repository’s configuration. This could also be addressed in a separate issue or even a PR for correction.

Observação: O Dockerfile padrão do repositório utiliza uma construção Multi-Stage, mas atualmente inclui dependências de desenvolvimento na fase de produção, gerando uma imagem de aproximadamente 3GB. Reorganizei o Dockerfile para evitar esse problema, garantindo que apenas as dependências de produção, bibliotecas e o código compilado sejam levados para a fase de produção. Além disso, são necessárias algumas correções no arquivo package.json, especificamente movendo as dependências de runtime, @babel/runtime e prom-client, de devDependencies para dependencies. Essas mudanças são necessárias caso meu Dockerfile seja utilizado para testar o ambiente, pois essas dependências de runtime estão faltando na configuração do repositório oficial. Isso também poderia ser abordado em uma nova issue ou até mesmo em um PR para correção.


[en] Log Output

info: 2024-10-25T12:02:21.077Z Server is running on port: 21465
info: 2024-10-25T12:02:21.084Z  Visit http://localhost:21465/api-docs for Swagger docs
info: 2024-10-25T12:02:21.085Z WPPConnect-Server version: 2.7.0
info:     
   _       ______  ____  ______                            __ 
  | |     / / __ \/ __ \/ ____/___  ____  ____  ___  _____/ /_
  | | /| / / /_/ / /_/ / /   / __ \/ __ \/ __ \/ _ \/ ___/ __/
  | |/ |/ / ____/ ____/ /___/ /_/ / / / / / / /  __/ /__/ /_  
  |__/|__/_/   /_/    \____/\____/_/ /_/_/ /_/\___/\___/\__/
info:     Checking for updates
info:     There is a new version available
info:     ┌───────────────────────────────────────────────────────────┐
│                                                           │
│   There is a new version of Wppconnect 1.34.2 ➜  1.35.0   │
│   Update your package by running:                         │
│                                                           │
│   > npm update @wppconnect-team/wppconnect                │
│                                                           │
└───────────────────────────────────────────────────────────┘
info:     For more info visit: https://github.com/wppconnect-team/wppconnect/blob/master/README.md#update-checking

info:     [nova:browser] Using browser folder './userDataDir/nova'
info:     [nova:browser] Initializing browser...
  puppeteer:browsers:launcher Launching /usr/bin/chromium-browser --allow-pre-commit-input --disable-background-networking --disable-background-timer-throttling --disable-backgrounding-occluded-windows --disable-breakpad --disable-client-side-phishing-detection --disable-dev-shm-usage --disable-hang-monitor --disable-infobars --disable-ipc-flooding-protection --disable-popup-blocking --disable-prompt-on-repost --disable-renderer-backgrounding --disable-search-engine-choice-screen --disable-sync --enable-automation --export-tagged-pdf --generate-pdf-document-outline --force-color-profile=srgb --metrics-recording-only --no-first-run --password-store=basic --use-mock-keychain --disable-features=Translate,AcceptCHFrame,MediaRouter,OptimizationHints,ProcessPerSiteUpToMainFrameThreshold,IsolateSandboxedIframes --enable-features=PdfOopif --user-data-dir=/usr/src/wpp-server/userDataDir/nova --headless=new --hide-scrollbars --mute-audio about:blank --disable-web-security --no-sandbox --aggressive-cache-discard --disable-cache --disable-application-cache --disable-offline-load-stale-cache --disk-cache-size=0 --disable-background-networking --disable-sync --disable-translate --hide-scrollbars --metrics-recording-only --mute-audio --no-first-run --safebrowsing-disable-auto-update --ignore-certificate-errors --ignore-ssl-errors --ignore-certificate-errors-spki-list --remote-debugging-port=9277 --remote-debugging-address=0.0.0.0 --disable-blink-features=AutomationControlled {
  detached: true,
  env: {},
  stdio: [ 'pipe', 'ignore', 'pipe', [length]: 3 ]
} +0ms
  puppeteer:browsers:launcher Launched 24 +3ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setDiscoverTargets","params":{"discover":true,"filter":[{}]},"id":1}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"215E470C5CD85CA6D37CE1148FD188E9","type":"tab","title":"","url":"about:blank","attached":false,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"5a1189fa-6f96-4c65-ad87-0d5fc18a9b28","type":"browser","title":"","url":"","attached":true,"canAccessOpener":false}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"63EDABCFEF23D41F81C5D5A27B4F390F","type":"tab","title":"Google Hangouts","url":"chrome-extension://nkeimhogjdpnpccoofpliimaahmaaome/background.html","attached":false,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"688497E87EF2063EB4E1D797785F8B44","type":"page","title":"","url":"about:blank","attached":false,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"BB4A586D319D27600445DAB2BEF024F3","type":"background_page","title":"Google Hangouts","url":"chrome-extension://nkeimhogjdpnpccoofpliimaahmaaome/background.html","attached":false,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [ '{"id":1,"result":{}}', [length]: 1 ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{"type":"page","exclude":true},{}]},"id":2}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"688497E87EF2063EB4E1D797785F8B44","type":"page","title":"about:blank","url":"about:blank","attached":false,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"215E470C5CD85CA6D37CE1148FD188E9","type":"tab","title":"about:blank","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"BF1A4B032D7FB9A0A9BD07542F11DA9D","targetInfo":{"targetId":"215E470C5CD85CA6D37CE1148FD188E9","type":"tab","title":"about:blank","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"},"waitingForDebugger":false}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"BF1A4B032D7FB9A0A9BD07542F11DA9D"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"BF1A4B032D7FB9A0A9BD07542F11DA9D"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"63EDABCFEF23D41F81C5D5A27B4F390F","type":"tab","title":"Google Hangouts","url":"chrome-extension://nkeimhogjdpnpccoofpliimaahmaaome/background.html","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"1C27ABEF04D78270A4B1E5DFD44269CD","targetInfo":{"targetId":"63EDABCFEF23D41F81C5D5A27B4F390F","type":"tab","title":"Google Hangouts","url":"chrome-extension://nkeimhogjdpnpccoofpliimaahmaaome/background.html","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"},"waitingForDebugger":false}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"1C27ABEF04D78270A4B1E5DFD44269CD"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"1C27ABEF04D78270A4B1E5DFD44269CD"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"BB4A586D319D27600445DAB2BEF024F3","type":"background_page","title":"Google Hangouts","url":"chrome-extension://nkeimhogjdpnpccoofpliimaahmaaome/background.html","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"D6A50EF51777262D109295473527C9A4","targetInfo":{"targetId":"BB4A586D319D27600445DAB2BEF024F3","type":"background_page","title":"Google Hangouts","url":"chrome-extension://nkeimhogjdpnpccoofpliimaahmaaome/background.html","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"},"waitingForDebugger":false}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"D6A50EF51777262D109295473527C9A4"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"D6A50EF51777262D109295473527C9A4"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [ '{"id":2,"result":{}}', [length]: 1 ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"688497E87EF2063EB4E1D797785F8B44","type":"page","title":"about:blank","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"8DF52110F96E96234AA4E22D79291628","targetInfo":{"targetId":"688497E87EF2063EB4E1D797785F8B44","type":"page","title":"about:blank","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"},"waitingForDebugger":false},"sessionId":"BF1A4B032D7FB9A0A9BD07542F11DA9D"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
http:     [nova:browser] checking headless...
http:     [nova:browser] headless option is active, browser hidden
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Network.enable","id":3,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Network.setCacheDisabled","params":{"cacheDisabled":false},"id":4,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Fetch.disable","id":5,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.enable","id":6,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.getFrameTree","id":7,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.setLifecycleEventsEnabled","params":{"enabled":true},"id":8,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.enable","id":9,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Performance.enable","id":10,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Log.enable","id":11,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":1,"result":{},"sessionId":"BF1A4B032D7FB9A0A9BD07542F11DA9D"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":2,"result":{},"sessionId":"BF1A4B032D7FB9A0A9BD07542F11DA9D"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"121A17324827438CDB1D2E06B020D7DB","targetInfo":{"targetId":"BB4A586D319D27600445DAB2BEF024F3","type":"background_page","title":"Google Hangouts","url":"chrome-extension://nkeimhogjdpnpccoofpliimaahmaaome/background.html","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"},"waitingForDebugger":false},"sessionId":"1C27ABEF04D78270A4B1E5DFD44269CD"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"121A17324827438CDB1D2E06B020D7DB"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"121A17324827438CDB1D2E06B020D7DB"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":1,"result":{},"sessionId":"1C27ABEF04D78270A4B1E5DFD44269CD"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":2,"result":{},"sessionId":"1C27ABEF04D78270A4B1E5DFD44269CD"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"BB4A586D319D27600445DAB2BEF024F3","type":"background_page","title":"Google Hangouts","url":"chrome-extension://nkeimhogjdpnpccoofpliimaahmaaome/background.html","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":5,"result":{},"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":1,"result":{},"sessionId":"D6A50EF51777262D109295473527C9A4"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":2,"result":{},"sessionId":"D6A50EF51777262D109295473527C9A4"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":1,"result":{},"sessionId":"121A17324827438CDB1D2E06B020D7DB"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":2,"result":{},"sessionId":"121A17324827438CDB1D2E06B020D7DB"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:error [
  puppeteer:error   ProtocolError: Target.setAutoAttach timed out. Increase the 'protocolTimeout' setting in launch/connect calls for a higher timeout if needed.
  puppeteer:error       at <instance_members_initializer> (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:94:14)
  puppeteer:error       at new Callback (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:98:16)
  puppeteer:error       at CallbackRegistry.create (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:23:26)
  puppeteer:error       at Connection._rawSend (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:90:26)
  puppeteer:error       at CdpCDPSession.send (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/CDPSession.js:66:33)
  puppeteer:error       at #onAttachedToTarget (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/ChromeTargetManager.js:280:21)
  puppeteer:error       at listener (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/ChromeTargetManager.js:126:42)
  puppeteer:error       at /usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/third_party/mitt/mitt.js:62:7
  puppeteer:error       at Array.map (<anonymous>)
  puppeteer:error       at Object.emit (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/third_party/mitt/mitt.js:61:20)
  puppeteer:error       at CdpCDPSession.emit (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.js:83:23)
  puppeteer:error       at CdpCDPSession._onMessage (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/CDPSession.js:82:18)
  puppeteer:error       at Connection.onMessage (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:143:25)
  puppeteer:error       at WebSocket.<anonymous> (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/node/NodeWebSocketTransport.js:44:32)
  puppeteer:error       at callListener (/usr/src/wpp-server/node_modules/puppeteer-core/node_modules/ws/lib/event-target.js:290:14)
  puppeteer:error       at WebSocket.onMessage (/usr/src/wpp-server/node_modules/puppeteer-core/node_modules/ws/lib/event-target.js:209:9) {
  puppeteer:error     [stack]: "ProtocolError: Target.setAutoAttach timed out. Increase the 'protocolTimeout' setting in launch/connect calls for a higher timeout if needed.\n" +
  puppeteer:error       '    at <instance_members_initializer> (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:94:14)\n' +
  puppeteer:error       '    at new Callback (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:98:16)\n' +
  puppeteer:error       '    at CallbackRegistry.create (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:23:26)\n' +
  puppeteer:error       '    at Connection._rawSend (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:90:26)\n' +
  puppeteer:error       '    at CdpCDPSession.send (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/CDPSession.js:66:33)\n' +
  puppeteer:error       '    at #onAttachedToTarget (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/ChromeTargetManager.js:280:21)\n' +
  puppeteer:error       '    at listener (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/ChromeTargetManager.js:126:42)\n' +
  puppeteer:error       '    at /usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/third_party/mitt/mitt.js:62:7\n' +
  puppeteer:error       '    at Array.map (<anonymous>)\n' +
  puppeteer:error       '    at Object.emit (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/third_party/mitt/mitt.js:61:20)\n' +
  puppeteer:error       '    at CdpCDPSession.emit (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.js:83:23)\n' +
  puppeteer:error       '    at CdpCDPSession._onMessage (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/CDPSession.js:82:18)\n' +
  puppeteer:error       '    at Connection.onMessage (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:143:25)\n' +
  puppeteer:error       '    at WebSocket.<anonymous> (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/node/NodeWebSocketTransport.js:44:32)\n' +
  puppeteer:error       '    at callListener (/usr/src/wpp-server/node_modules/puppeteer-core/node_modules/ws/lib/event-target.js:290:14)\n' +
  puppeteer:error       '    at WebSocket.onMessage (/usr/src/wpp-server/node_modules/puppeteer-core/node_modules/ws/lib/event-target.js:209:9)',
  puppeteer:error     name: 'ProtocolError',
  puppeteer:error     message: "Target.setAutoAttach timed out. Increase the 'protocolTimeout' setting in launch/connect calls for a higher timeout if needed.",
  puppeteer:error     [code]: [Getter/Setter],
  puppeteer:error     [originalMessage]: [Getter/Setter],
  puppeteer:error     [Symbol(Symbol.toStringTag)]: [Getter]
  puppeteer:error   },
  puppeteer:error   [length]: 1
  puppeteer:error ] +0ms
error: 2024-10-25T12:05:56.206Z Network.enable timed out. Increase the 'protocolTimeout' setting in launch/connect calls for a higher timeout if needed. - ProtocolError: Network.enable timed out. Increase the 'protocolTimeout' setting in launch/connect calls for a higher timeout if needed.
    at <instance_members_initializer> (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:94:14)
    at new Callback (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:98:16)
    at CallbackRegistry.create (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:23:26)
    at Connection._rawSend (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:90:26)
    at CdpCDPSession.send (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/CDPSession.js:66:33)
    at NetworkManager.addClient (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/NetworkManager.js:62:20)
    at FrameManager.initialize (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/FrameManager.js:170:38)
    at #initialize (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Page.js:285:36)
    at CdpPage._create (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Page.js:98:31)
    at /usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Target.js:206:42
    at async PageTarget.page (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Target.js:209:17)
    at async Promise.all (index 0)
    at async CdpBrowserContext.pages (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/BrowserContext.js:81:23)
    at async Promise.all (index 0)
    at async CdpBrowser.pages (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/api/Browser.js:110:30)


[pt-br] Saída de Log

info: 2024-10-25T12:02:21.077Z Server is running on port: 21465
info: 2024-10-25T12:02:21.084Z  Visit http://localhost:21465/api-docs for Swagger docs
info: 2024-10-25T12:02:21.085Z WPPConnect-Server version: 2.7.0
info:     
   _       ______  ____  ______                            __ 
  | |     / / __ \/ __ \/ ____/___  ____  ____  ___  _____/ /_
  | | /| / / /_/ / /_/ / /   / __ \/ __ \/ __ \/ _ \/ ___/ __/
  | |/ |/ / ____/ ____/ /___/ /_/ / / / / / / /  __/ /__/ /_  
  |__/|__/_/   /_/    \____/\____/_/ /_/_/ /_/\___/\___/\__/
info:     Checking for updates
info:     There is a new version available
info:     ┌───────────────────────────────────────────────────────────┐
│                                                           │
│   There is a new version of Wppconnect 1.34.2 ➜  1.35.0   │
│   Update your package by running:                         │
│                                                           │
│   > npm update @wppconnect-team/wppconnect                │
│                                                           │
└───────────────────────────────────────────────────────────┘
info:     For more info visit: https://github.com/wppconnect-team/wppconnect/blob/master/README.md#update-checking

info:     [nova:browser] Using browser folder './userDataDir/nova'
info:     [nova:browser] Initializing browser...
  puppeteer:browsers:launcher Launching /usr/bin/chromium-browser --allow-pre-commit-input --disable-background-networking --disable-background-timer-throttling --disable-backgrounding-occluded-windows --disable-breakpad --disable-client-side-phishing-detection --disable-dev-shm-usage --disable-hang-monitor --disable-infobars --disable-ipc-flooding-protection --disable-popup-blocking --disable-prompt-on-repost --disable-renderer-backgrounding --disable-search-engine-choice-screen --disable-sync --enable-automation --export-tagged-pdf --generate-pdf-document-outline --force-color-profile=srgb --metrics-recording-only --no-first-run --password-store=basic --use-mock-keychain --disable-features=Translate,AcceptCHFrame,MediaRouter,OptimizationHints,ProcessPerSiteUpToMainFrameThreshold,IsolateSandboxedIframes --enable-features=PdfOopif --user-data-dir=/usr/src/wpp-server/userDataDir/nova --headless=new --hide-scrollbars --mute-audio about:blank --disable-web-security --no-sandbox --aggressive-cache-discard --disable-cache --disable-application-cache --disable-offline-load-stale-cache --disk-cache-size=0 --disable-background-networking --disable-sync --disable-translate --hide-scrollbars --metrics-recording-only --mute-audio --no-first-run --safebrowsing-disable-auto-update --ignore-certificate-errors --ignore-ssl-errors --ignore-certificate-errors-spki-list --remote-debugging-port=9277 --remote-debugging-address=0.0.0.0 --disable-blink-features=AutomationControlled {
  detached: true,
  env: {},
  stdio: [ 'pipe', 'ignore', 'pipe', [length]: 3 ]
} +0ms
  puppeteer:browsers:launcher Launched 24 +3ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setDiscoverTargets","params":{"discover":true,"filter":[{}]},"id":1}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"215E470C5CD85CA6D37CE1148FD188E9","type":"tab","title":"","url":"about:blank","attached":false,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"5a1189fa-6f96-4c65-ad87-0d5fc18a9b28","type":"browser","title":"","url":"","attached":true,"canAccessOpener":false}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"63EDABCFEF23D41F81C5D5A27B4F390F","type":"tab","title":"Google Hangouts","url":"chrome-extension://nkeimhogjdpnpccoofpliimaahmaaome/background.html","attached":false,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"688497E87EF2063EB4E1D797785F8B44","type":"page","title":"","url":"about:blank","attached":false,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"BB4A586D319D27600445DAB2BEF024F3","type":"background_page","title":"Google Hangouts","url":"chrome-extension://nkeimhogjdpnpccoofpliimaahmaaome/background.html","attached":false,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [ '{"id":1,"result":{}}', [length]: 1 ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{"type":"page","exclude":true},{}]},"id":2}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"688497E87EF2063EB4E1D797785F8B44","type":"page","title":"about:blank","url":"about:blank","attached":false,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"215E470C5CD85CA6D37CE1148FD188E9","type":"tab","title":"about:blank","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"BF1A4B032D7FB9A0A9BD07542F11DA9D","targetInfo":{"targetId":"215E470C5CD85CA6D37CE1148FD188E9","type":"tab","title":"about:blank","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"},"waitingForDebugger":false}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"BF1A4B032D7FB9A0A9BD07542F11DA9D"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"BF1A4B032D7FB9A0A9BD07542F11DA9D"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"63EDABCFEF23D41F81C5D5A27B4F390F","type":"tab","title":"Google Hangouts","url":"chrome-extension://nkeimhogjdpnpccoofpliimaahmaaome/background.html","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"1C27ABEF04D78270A4B1E5DFD44269CD","targetInfo":{"targetId":"63EDABCFEF23D41F81C5D5A27B4F390F","type":"tab","title":"Google Hangouts","url":"chrome-extension://nkeimhogjdpnpccoofpliimaahmaaome/background.html","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"},"waitingForDebugger":false}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"1C27ABEF04D78270A4B1E5DFD44269CD"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"1C27ABEF04D78270A4B1E5DFD44269CD"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"BB4A586D319D27600445DAB2BEF024F3","type":"background_page","title":"Google Hangouts","url":"chrome-extension://nkeimhogjdpnpccoofpliimaahmaaome/background.html","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"D6A50EF51777262D109295473527C9A4","targetInfo":{"targetId":"BB4A586D319D27600445DAB2BEF024F3","type":"background_page","title":"Google Hangouts","url":"chrome-extension://nkeimhogjdpnpccoofpliimaahmaaome/background.html","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"},"waitingForDebugger":false}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"D6A50EF51777262D109295473527C9A4"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"D6A50EF51777262D109295473527C9A4"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [ '{"id":2,"result":{}}', [length]: 1 ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"688497E87EF2063EB4E1D797785F8B44","type":"page","title":"about:blank","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"8DF52110F96E96234AA4E22D79291628","targetInfo":{"targetId":"688497E87EF2063EB4E1D797785F8B44","type":"page","title":"about:blank","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"},"waitingForDebugger":false},"sessionId":"BF1A4B032D7FB9A0A9BD07542F11DA9D"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
http:     [nova:browser] checking headless...
http:     [nova:browser] headless option is active, browser hidden
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Network.enable","id":3,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Network.setCacheDisabled","params":{"cacheDisabled":false},"id":4,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Fetch.disable","id":5,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.enable","id":6,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.getFrameTree","id":7,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.setLifecycleEventsEnabled","params":{"enabled":true},"id":8,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.enable","id":9,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Performance.enable","id":10,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Log.enable","id":11,"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":1,"result":{},"sessionId":"BF1A4B032D7FB9A0A9BD07542F11DA9D"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":2,"result":{},"sessionId":"BF1A4B032D7FB9A0A9BD07542F11DA9D"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"121A17324827438CDB1D2E06B020D7DB","targetInfo":{"targetId":"BB4A586D319D27600445DAB2BEF024F3","type":"background_page","title":"Google Hangouts","url":"chrome-extension://nkeimhogjdpnpccoofpliimaahmaaome/background.html","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"},"waitingForDebugger":false},"sessionId":"1C27ABEF04D78270A4B1E5DFD44269CD"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"121A17324827438CDB1D2E06B020D7DB"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"121A17324827438CDB1D2E06B020D7DB"}',
  puppeteer:protocol:SEND ►   [length]: 1
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":1,"result":{},"sessionId":"1C27ABEF04D78270A4B1E5DFD44269CD"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":2,"result":{},"sessionId":"1C27ABEF04D78270A4B1E5DFD44269CD"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"BB4A586D319D27600445DAB2BEF024F3","type":"background_page","title":"Google Hangouts","url":"chrome-extension://nkeimhogjdpnpccoofpliimaahmaaome/background.html","attached":true,"canAccessOpener":false,"browserContextId":"9BF372C83196AC3E1268C349E95C0DC4"}}}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":5,"result":{},"sessionId":"8DF52110F96E96234AA4E22D79291628"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":1,"result":{},"sessionId":"D6A50EF51777262D109295473527C9A4"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":2,"result":{},"sessionId":"D6A50EF51777262D109295473527C9A4"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":1,"result":{},"sessionId":"121A17324827438CDB1D2E06B020D7DB"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":2,"result":{},"sessionId":"121A17324827438CDB1D2E06B020D7DB"}',
  puppeteer:protocol:RECV ◀   [length]: 1
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:error [
  puppeteer:error   ProtocolError: Target.setAutoAttach timed out. Increase the 'protocolTimeout' setting in launch/connect calls for a higher timeout if needed.
  puppeteer:error       at <instance_members_initializer> (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:94:14)
  puppeteer:error       at new Callback (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:98:16)
  puppeteer:error       at CallbackRegistry.create (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:23:26)
  puppeteer:error       at Connection._rawSend (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:90:26)
  puppeteer:error       at CdpCDPSession.send (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/CDPSession.js:66:33)
  puppeteer:error       at #onAttachedToTarget (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/ChromeTargetManager.js:280:21)
  puppeteer:error       at listener (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/ChromeTargetManager.js:126:42)
  puppeteer:error       at /usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/third_party/mitt/mitt.js:62:7
  puppeteer:error       at Array.map (<anonymous>)
  puppeteer:error       at Object.emit (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/third_party/mitt/mitt.js:61:20)
  puppeteer:error       at CdpCDPSession.emit (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.js:83:23)
  puppeteer:error       at CdpCDPSession._onMessage (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/CDPSession.js:82:18)
  puppeteer:error       at Connection.onMessage (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:143:25)
  puppeteer:error       at WebSocket.<anonymous> (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/node/NodeWebSocketTransport.js:44:32)
  puppeteer:error       at callListener (/usr/src/wpp-server/node_modules/puppeteer-core/node_modules/ws/lib/event-target.js:290:14)
  puppeteer:error       at WebSocket.onMessage (/usr/src/wpp-server/node_modules/puppeteer-core/node_modules/ws/lib/event-target.js:209:9) {
  puppeteer:error     [stack]: "ProtocolError: Target.setAutoAttach timed out. Increase the 'protocolTimeout' setting in launch/connect calls for a higher timeout if needed.\n" +
  puppeteer:error       '    at <instance_members_initializer> (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:94:14)\n' +
  puppeteer:error       '    at new Callback (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:98:16)\n' +
  puppeteer:error       '    at CallbackRegistry.create (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:23:26)\n' +
  puppeteer:error       '    at Connection._rawSend (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:90:26)\n' +
  puppeteer:error       '    at CdpCDPSession.send (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/CDPSession.js:66:33)\n' +
  puppeteer:error       '    at #onAttachedToTarget (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/ChromeTargetManager.js:280:21)\n' +
  puppeteer:error       '    at listener (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/ChromeTargetManager.js:126:42)\n' +
  puppeteer:error       '    at /usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/third_party/mitt/mitt.js:62:7\n' +
  puppeteer:error       '    at Array.map (<anonymous>)\n' +
  puppeteer:error       '    at Object.emit (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/third_party/mitt/mitt.js:61:20)\n' +
  puppeteer:error       '    at CdpCDPSession.emit (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.js:83:23)\n' +
  puppeteer:error       '    at CdpCDPSession._onMessage (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/CDPSession.js:82:18)\n' +
  puppeteer:error       '    at Connection.onMessage (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:143:25)\n' +
  puppeteer:error       '    at WebSocket.<anonymous> (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/node/NodeWebSocketTransport.js:44:32)\n' +
  puppeteer:error       '    at callListener (/usr/src/wpp-server/node_modules/puppeteer-core/node_modules/ws/lib/event-target.js:290:14)\n' +
  puppeteer:error       '    at WebSocket.onMessage (/usr/src/wpp-server/node_modules/puppeteer-core/node_modules/ws/lib/event-target.js:209:9)',
  puppeteer:error     name: 'ProtocolError',
  puppeteer:error     message: "Target.setAutoAttach timed out. Increase the 'protocolTimeout' setting in launch/connect calls for a higher timeout if needed.",
  puppeteer:error     [code]: [Getter/Setter],
  puppeteer:error     [originalMessage]: [Getter/Setter],
  puppeteer:error     [Symbol(Symbol.toStringTag)]: [Getter]
  puppeteer:error   },
  puppeteer:error   [length]: 1
  puppeteer:error ] +0ms
error: 2024-10-25T12:05:56.206Z Network.enable timed out. Increase the 'protocolTimeout' setting in launch/connect calls for a higher timeout if needed. - ProtocolError: Network.enable timed out. Increase the 'protocolTimeout' setting in launch/connect calls for a higher timeout if needed.
    at <instance_members_initializer> (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:94:14)
    at new Callback (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:98:16)
    at CallbackRegistry.create (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:23:26)
    at Connection._rawSend (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:90:26)
    at CdpCDPSession.send (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/CDPSession.js:66:33)
    at NetworkManager.addClient (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/NetworkManager.js:62:20)
    at FrameManager.initialize (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/FrameManager.js:170:38)
    at #initialize (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Page.js:285:36)
    at CdpPage._create (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Page.js:98:31)
    at /usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Target.js:206:42
    at async PageTarget.page (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Target.js:209:17)
    at async Promise.all (index 0)
    at async CdpBrowserContext.pages (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/BrowserContext.js:81:23)
    at async Promise.all (index 0)
    at async CdpBrowser.pages (/usr/src/wpp-server/node_modules/puppeteer-core/lib/cjs/puppeteer/api/Browser.js:110:30)



[en] Additional context / Screenshot

While investigating this issue, I also identified a separate problem: an attachment upload limit of 60MB, which remains unresolved but will be reported in a separate bug report.

[pt-br] Contexto Adicional / Screenshot

Ao investigar o problema, também identifiquei uma limitação de upload de anexos de 60MB que ainda não foi resolvida, mas pretendo abrir um relatório de bug separado para tratar essa questão.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working needs triage
Projects
None yet
Development

No branches or pull requests

1 participant