use playwright-firefox such that npm install does not download other browsers
This commit is contained in:
parent
97f6735833
commit
18c27ba881
7 changed files with 31 additions and 30 deletions
11
Dockerfile
11
Dockerfile
|
|
@ -7,10 +7,8 @@ FROM ubuntu:jammy
|
||||||
# https://github.com/hadolint/hadolint/wiki/DL4006
|
# https://github.com/hadolint/hadolint/wiki/DL4006
|
||||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD true
|
|
||||||
|
|
||||||
# Install up-to-date node & npm, deps for virtual screen & noVNC, browser, pip for apprise.
|
# Install up-to-date node & npm, deps for virtual screen & noVNC, firefox, pip for apprise.
|
||||||
# Playwright needs --with-deps for firefox.
|
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install --no-install-recommends -y curl ca-certificates \
|
&& apt-get install --no-install-recommends -y curl ca-certificates \
|
||||||
&& curl -fsSL https://deb.nodesource.com/setup_19.x | bash - \
|
&& curl -fsSL https://deb.nodesource.com/setup_19.x | bash - \
|
||||||
|
|
@ -50,8 +48,11 @@ RUN pip install apprise
|
||||||
WORKDIR /fgc
|
WORKDIR /fgc
|
||||||
COPY package*.json ./
|
COPY package*.json ./
|
||||||
|
|
||||||
# If firefox is installed (~/.cache/ms-playwright/firefox-*) before `npm install` it may be a newer version than in package.json and playwright will not find it; system deps are installed sep. via apt above to avoid having to pin the version there.
|
# Playwright installs patched firefox to ~/.cache/ms-playwright/firefox-*
|
||||||
RUN npm install && npx playwright install firefox
|
# Requires some system deps to run (see install-deps above).
|
||||||
|
RUN npm install
|
||||||
|
# Old: PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD + install firefox (had to be done after `npm install` to get the correct version). Now: playwright-firefox as npm dep and `npm install` will only install that.
|
||||||
|
# RUN npx playwright install firefox
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,10 +31,10 @@ Data (including json files with claimed games, codes to redeem, screenshots) is
|
||||||
|
|
||||||
1. [Install Node.js](https://nodejs.org/en/download)
|
1. [Install Node.js](https://nodejs.org/en/download)
|
||||||
2. Clone/download this repository and `cd` into it in a terminal
|
2. Clone/download this repository and `cd` into it in a terminal
|
||||||
3. Run `npm install && npx playwright install firefox`
|
3. Run `npm install`
|
||||||
4. Run `pip install apprise` to install [apprise](https://github.com/caronc/apprise) if you want notifications
|
4. Run `pip install apprise` to install [apprise](https://github.com/caronc/apprise) if you want notifications
|
||||||
|
|
||||||
This downloads Firefox to a cache in home ([doc](https://playwright.dev/docs/browsers#managing-browser-binaries)).
|
During `npm install` Playwright will download its Firefox to a cache in home ([doc](https://playwright.dev/docs/browsers#managing-browser-binaries)).
|
||||||
If you are missing some dependencies for the browser on your system, you can use `sudo npx playwright install firefox --with-deps`.
|
If you are missing some dependencies for the browser on your system, you can use `sudo npx playwright install firefox --with-deps`.
|
||||||
|
|
||||||
If you don't want to use Docker for quasi-headless mode, you could run inside a virtual machine, on a server, or you wake your PC at night to avoid being interrupted.
|
If you don't want to use Docker for quasi-headless mode, you could run inside a virtual machine, on a server, or you wake your PC at night to avoid being interrupted.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { firefox } from 'playwright'; // stealth plugin needs no outdated playwright-extra
|
import { firefox } from 'playwright-firefox'; // stealth plugin needs no outdated playwright-extra
|
||||||
import { authenticator } from 'otplib';
|
import { authenticator } from 'otplib';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import { existsSync, writeFileSync } from 'fs';
|
import { existsSync, writeFileSync } from 'fs';
|
||||||
|
|
|
||||||
2
gog.js
2
gog.js
|
|
@ -1,4 +1,4 @@
|
||||||
import { firefox } from 'playwright'; // stealth plugin needs no outdated playwright-extra
|
import { firefox } from 'playwright-firefox'; // stealth plugin needs no outdated playwright-extra
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import { jsonDb, datetime, filenamify, prompt, notify, html_game_list } from './util.js';
|
import { jsonDb, datetime, filenamify, prompt, notify, html_game_list } from './util.js';
|
||||||
import { cfg } from './config.js';
|
import { cfg } from './config.js';
|
||||||
|
|
|
||||||
38
package-lock.json
generated
38
package-lock.json
generated
|
|
@ -14,7 +14,7 @@
|
||||||
"enquirer": "^2.3.6",
|
"enquirer": "^2.3.6",
|
||||||
"lowdb": "^5.1.0",
|
"lowdb": "^5.1.0",
|
||||||
"otplib": "^12.0.1",
|
"otplib": "^12.0.1",
|
||||||
"playwright": "^1.31.0",
|
"playwright-firefox": "^1.31.0",
|
||||||
"puppeteer-extra-plugin-stealth": "^2.11.1"
|
"puppeteer-extra-plugin-stealth": "^2.11.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -435,14 +435,10 @@
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/playwright": {
|
"node_modules/playwright-core": {
|
||||||
"version": "1.31.0",
|
"version": "1.31.0",
|
||||||
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.31.0.tgz",
|
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.31.0.tgz",
|
||||||
"integrity": "sha512-cFn1ie3bdYw/9/Ty3842CfPSRSy+ZWPjEhrxWgC+jL/CUjq5RKVJZwUbXV1UKBQU1Vo0NetsokXmk9EEZiqVHQ==",
|
"integrity": "sha512-/KquBjS5DcASCh8cGeNVHuC0kyb7c9plKTwaKxgOGtxT7+DZO2fjmFvPDBSXslEIK5CeOO/2kk5rOCktFXKEdA==",
|
||||||
"hasInstallScript": true,
|
|
||||||
"dependencies": {
|
|
||||||
"playwright-core": "1.31.0"
|
|
||||||
},
|
|
||||||
"bin": {
|
"bin": {
|
||||||
"playwright": "cli.js"
|
"playwright": "cli.js"
|
||||||
},
|
},
|
||||||
|
|
@ -450,10 +446,14 @@
|
||||||
"node": ">=14"
|
"node": ">=14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/playwright-core": {
|
"node_modules/playwright-firefox": {
|
||||||
"version": "1.31.0",
|
"version": "1.31.0",
|
||||||
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.31.0.tgz",
|
"resolved": "https://registry.npmjs.org/playwright-firefox/-/playwright-firefox-1.31.0.tgz",
|
||||||
"integrity": "sha512-/KquBjS5DcASCh8cGeNVHuC0kyb7c9plKTwaKxgOGtxT7+DZO2fjmFvPDBSXslEIK5CeOO/2kk5rOCktFXKEdA==",
|
"integrity": "sha512-E+v16LzBt6SaSRCLH0ZV8NuikTmbmbh9Ky1JgD5sCoF8OHJ3jEjtuoHAJCkO57PJhMX9q/oZ+x133seUMIsKzA==",
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"dependencies": {
|
||||||
|
"playwright-core": "1.31.0"
|
||||||
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"playwright": "cli.js"
|
"playwright": "cli.js"
|
||||||
},
|
},
|
||||||
|
|
@ -1002,19 +1002,19 @@
|
||||||
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
||||||
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
|
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
|
||||||
},
|
},
|
||||||
"playwright": {
|
|
||||||
"version": "1.31.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.31.0.tgz",
|
|
||||||
"integrity": "sha512-cFn1ie3bdYw/9/Ty3842CfPSRSy+ZWPjEhrxWgC+jL/CUjq5RKVJZwUbXV1UKBQU1Vo0NetsokXmk9EEZiqVHQ==",
|
|
||||||
"requires": {
|
|
||||||
"playwright-core": "1.31.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"playwright-core": {
|
"playwright-core": {
|
||||||
"version": "1.31.0",
|
"version": "1.31.0",
|
||||||
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.31.0.tgz",
|
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.31.0.tgz",
|
||||||
"integrity": "sha512-/KquBjS5DcASCh8cGeNVHuC0kyb7c9plKTwaKxgOGtxT7+DZO2fjmFvPDBSXslEIK5CeOO/2kk5rOCktFXKEdA=="
|
"integrity": "sha512-/KquBjS5DcASCh8cGeNVHuC0kyb7c9plKTwaKxgOGtxT7+DZO2fjmFvPDBSXslEIK5CeOO/2kk5rOCktFXKEdA=="
|
||||||
},
|
},
|
||||||
|
"playwright-firefox": {
|
||||||
|
"version": "1.31.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/playwright-firefox/-/playwright-firefox-1.31.0.tgz",
|
||||||
|
"integrity": "sha512-E+v16LzBt6SaSRCLH0ZV8NuikTmbmbh9Ky1JgD5sCoF8OHJ3jEjtuoHAJCkO57PJhMX9q/oZ+x133seUMIsKzA==",
|
||||||
|
"requires": {
|
||||||
|
"playwright-core": "1.31.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"puppeteer-extra-plugin": {
|
"puppeteer-extra-plugin": {
|
||||||
"version": "3.2.2",
|
"version": "3.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/puppeteer-extra-plugin/-/puppeteer-extra-plugin-3.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/puppeteer-extra-plugin/-/puppeteer-extra-plugin-3.2.2.tgz",
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
"enquirer": "^2.3.6",
|
"enquirer": "^2.3.6",
|
||||||
"lowdb": "^5.1.0",
|
"lowdb": "^5.1.0",
|
||||||
"otplib": "^12.0.1",
|
"otplib": "^12.0.1",
|
||||||
"playwright": "^1.31.0",
|
"playwright-firefox": "^1.31.0",
|
||||||
"puppeteer-extra-plugin-stealth": "^2.11.1"
|
"puppeteer-extra-plugin-stealth": "^2.11.1"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { firefox } from 'playwright'; // stealth plugin needs no outdated playwright-extra
|
import { firefox } from 'playwright-firefox'; // stealth plugin needs no outdated playwright-extra
|
||||||
import { authenticator } from 'otplib';
|
import { authenticator } from 'otplib';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import { jsonDb, datetime, stealth, filenamify, prompt, notify, html_game_list } from './util.js';
|
import { jsonDb, datetime, stealth, filenamify, prompt, notify, html_game_list } from './util.js';
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue