mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
4be4acca6e
This sets up a framework for running tests in parallel. It increases the total time taken (since some steps are repeated) but reduces the turn-around time significantly overall. The main objective is to make it possible to release more test batches to grist-core without bringing CI to a crawl. The clever little test/split-test.js script is from the Grist Labs mono-repo and is Dmitry's work. I considered doing the build in one job, and copying it to test jobs, since it feels wasteful to repeat it. That may be worth trying, especially if we start getting jobs backing up (total concurrent Linux jobs on free plan is quoted at 20). It might also be worth looking at doing some tests in parallel on the same worker, perhaps using the relatively new MOCHA_WORKER_ID feature, since the tests are often not actually CPU or I/O bound.
187 lines
7.0 KiB
JSON
187 lines
7.0 KiB
JSON
{
|
|
"name": "grist-core",
|
|
"version": "1.0.8",
|
|
"license": "Apache-2.0",
|
|
"description": "Grist is the evolution of spreadsheets",
|
|
"homepage": "https://github.com/gristlabs/grist-core",
|
|
"repository": "git://github.com/gristlabs/grist-core.git",
|
|
"scripts": {
|
|
"start": "sandbox/watch.sh",
|
|
"install:python": "buildtools/prepare_python.sh",
|
|
"install:python2": "buildtools/prepare_python2.sh",
|
|
"install:python3": "buildtools/prepare_python3.sh",
|
|
"build:prod": "buildtools/build.sh",
|
|
"start:prod": "sandbox/run.sh",
|
|
"test": "GRIST_SESSION_COOKIE=grist_test_cookie GRIST_TEST_LOGIN=1 TEST_SUPPORT_API_KEY=api_key_for_support TEST_CLEAN_DATABASE=true NODE_PATH=_build:_build/stubs:_build/ext mocha ${DEBUG:+-b --no-exit} --slow 8000 ${DEBUG:---forbid-only} -g ${GREP_TESTS:-''} '_build/test/common/*.js' '_build/test/client/*.js' '_build/test/nbrowser/*.js' '_build/test/server/**/*.js' '_build/test/gen-server/**/*.js'",
|
|
"test:nbrowser": "TEST_SUITE=nbrowser TEST_SUITE_FOR_TIMINGS=nbrowser TIMINGS_FILE=test/timings/nbrowser.txt GRIST_SESSION_COOKIE=grist_test_cookie GRIST_TEST_LOGIN=1 TEST_SUPPORT_API_KEY=api_key_for_support TEST_CLEAN_DATABASE=true NODE_PATH=_build:_build/stubs:_build/ext mocha ${DEBUG:+-b --no-exit} ${DEBUG:---forbid-only} -g ${GREP_TESTS:-''} --slow 8000 -R test/xunit-file '_build/test/nbrowser/**/*.js'",
|
|
"test:client": "GRIST_SESSION_COOKIE=grist_test_cookie NODE_PATH=_build:_build/stubs:_build/ext mocha ${DEBUG:+'-b'} '_build/test/client/**/*.js'",
|
|
"test:common": "GRIST_SESSION_COOKIE=grist_test_cookie NODE_PATH=_build:_build/stubs:_build/ext mocha ${DEBUG:+'-b'} '_build/test/common/**/*.js'",
|
|
"test:server": "TEST_SUITE=server TEST_SUITE_FOR_TIMINGS=server TIMINGS_FILE=test/timings/server.txt GRIST_SESSION_COOKIE=grist_test_cookie NODE_PATH=_build:_build/stubs:_build/ext mocha ${DEBUG:+'-b'} -R test/xunit-file '_build/test/server/**/*.js' '_build/test/gen-server/**/*.js'",
|
|
"test:smoke": "NODE_PATH=_build:_build/stubs:_build/ext mocha _build/test/nbrowser/Smoke.js",
|
|
"test:docker": "./test/test_under_docker.sh",
|
|
"test:python": "sandbox_venv3/bin/python sandbox/grist/runtests.py ${GREP_TESTS:+discover -p \"test*${GREP_TESTS}*.py\"}",
|
|
"cli": "NODE_PATH=_build:_build/stubs:_build/ext node _build/app/server/companion.js",
|
|
"lint": "eslint --cache --cache-strategy content .",
|
|
"lint:fix": "eslint --cache --cache-strategy=content --fix .",
|
|
"lint:ci": "eslint --max-warnings=0 .",
|
|
"generate:translation": "NODE_PATH=_build:_build/stubs:_build/ext node buildtools/generate_translation_keys.js",
|
|
"generate:schema:ts": "buildtools/update_schema.sh"
|
|
},
|
|
"keywords": [
|
|
"grist",
|
|
"spreadsheet",
|
|
"database"
|
|
],
|
|
"author": {
|
|
"name": "Grist Labs Inc.",
|
|
"email": "info@getgrist.com"
|
|
},
|
|
"private": false,
|
|
"devDependencies": {
|
|
"@babel/core": "7.18.5",
|
|
"@babel/eslint-parser": "7.18.2",
|
|
"@types/accept-language-parser": "1.5.2",
|
|
"@types/backbone": "1.3.43",
|
|
"@types/chai": "4.1.7",
|
|
"@types/chai-as-promised": "7.1.0",
|
|
"@types/content-disposition": "0.5.2",
|
|
"@types/diff-match-patch": "1.0.32",
|
|
"@types/double-ended-queue": "2.1.0",
|
|
"@types/express": "4.16.0",
|
|
"@types/form-data": "2.2.1",
|
|
"@types/fs-extra": "5.0.4",
|
|
"@types/http-proxy": "1.17.9",
|
|
"@types/i18next-fs-backend": "1.1.2",
|
|
"@types/image-size": "0.0.29",
|
|
"@types/js-yaml": "3.11.2",
|
|
"@types/jsdom": "16.2.14",
|
|
"@types/jsesc": "3.0.1",
|
|
"@types/jsonwebtoken": "7.2.8",
|
|
"@types/lodash": "4.14.117",
|
|
"@types/lru-cache": "5.1.1",
|
|
"@types/mime-types": "2.1.0",
|
|
"@types/minio": "7.0.15",
|
|
"@types/mocha": "5.2.5",
|
|
"@types/moment-timezone": "0.5.9",
|
|
"@types/node": "^14",
|
|
"@types/node-fetch": "2.6.2",
|
|
"@types/pidusage": "2.0.1",
|
|
"@types/plotly.js": "2.12.1",
|
|
"@types/qrcode": "1.4.2",
|
|
"@types/redlock": "3.0.2",
|
|
"@types/saml2-js": "2.0.1",
|
|
"@types/selenium-webdriver": "4.0.0",
|
|
"@types/sinon": "5.0.5",
|
|
"@types/sqlite3": "3.1.6",
|
|
"@types/tmp": "0.0.33",
|
|
"@types/uuid": "3.4.4",
|
|
"@types/which": "2.0.1",
|
|
"@types/ws": "^6",
|
|
"@typescript-eslint/eslint-plugin": "5.29.0",
|
|
"@typescript-eslint/parser": "5.29.0",
|
|
"app-module-path": "2.2.0",
|
|
"catw": "1.0.1",
|
|
"chai": "4.2.0",
|
|
"chai-as-promised": "7.1.1",
|
|
"chance": "1.0.16",
|
|
"esbuild-loader": "2.19.0",
|
|
"eslint": "8.18.0",
|
|
"http-proxy": "1.18.1",
|
|
"i18next-scanner": "4.1.0",
|
|
"jsdom": "16.5.0",
|
|
"mocha": "5.2.0",
|
|
"mocha-webdriver": "0.2.9",
|
|
"moment-locales-webpack-plugin": "^1.2.0",
|
|
"nodemon": "^2.0.4",
|
|
"otplib": "12.0.1",
|
|
"selenium-webdriver": "3.6.0",
|
|
"sinon": "7.1.1",
|
|
"source-map-loader": "^0.2.4",
|
|
"tmp-promise": "1.0.5",
|
|
"ts-interface-builder": "0.3.2",
|
|
"typescript": "4.7.4",
|
|
"webpack": "5.73.0",
|
|
"webpack-cli": "4.10.0",
|
|
"why-is-node-running": "2.0.3"
|
|
},
|
|
"dependencies": {
|
|
"@googleapis/drive": "0.3.1",
|
|
"@googleapis/oauth2": "0.2.0",
|
|
"@gristlabs/connect-sqlite3": "0.9.11-grist.5",
|
|
"@gristlabs/express-session": "1.17.0",
|
|
"@gristlabs/moment-guess": "1.2.4-grist.1",
|
|
"@gristlabs/pidusage": "2.0.17",
|
|
"@gristlabs/sqlite3": "5.1.4-grist.8",
|
|
"@popperjs/core": "2.3.3",
|
|
"accept-language-parser": "1.5.0",
|
|
"async-mutex": "0.2.4",
|
|
"axios": "0.21.2",
|
|
"backbone": "1.3.3",
|
|
"bootstrap": "3.3.5",
|
|
"bootstrap-datepicker": "1.9.0",
|
|
"bowser": "2.7.0",
|
|
"brace": "0.11.1",
|
|
"collect-js-deps": "^0.1.1",
|
|
"color-convert": "2.0.1",
|
|
"commander": "9.3.0",
|
|
"components-jqueryui": "1.12.1",
|
|
"connect-redis": "3.4.0",
|
|
"cookie": "0.5.0",
|
|
"cookie-parser": "1.4.3",
|
|
"csv": "4.0.0",
|
|
"diff-match-patch": "1.0.5",
|
|
"double-ended-queue": "2.1.0-0",
|
|
"exceljs": "4.2.1",
|
|
"express": "4.16.4",
|
|
"file-type": "16.5.4",
|
|
"fs-extra": "7.0.0",
|
|
"grain-rpc": "0.1.7",
|
|
"grainjs": "1.0.2",
|
|
"handlebars": "4.7.7",
|
|
"highlight.js": "10.7.3",
|
|
"http-proxy-agent": "5.0.0",
|
|
"https-proxy-agent": "5.0.1",
|
|
"i18n-iso-countries": "6.1.0",
|
|
"i18next": "21.9.1",
|
|
"i18next-http-middleware": "3.2.1",
|
|
"image-size": "0.6.3",
|
|
"jquery": "3.5.0",
|
|
"js-yaml": "3.14.1",
|
|
"jsesc": "3.0.2",
|
|
"jsonwebtoken": "8.3.0",
|
|
"knockout": "3.5.0",
|
|
"locale-currency": "0.0.2",
|
|
"lodash": "4.17.21",
|
|
"minio": "7.0.32",
|
|
"moment": "2.29.4",
|
|
"moment-timezone": "0.5.35",
|
|
"morgan": "1.9.1",
|
|
"mousetrap": "1.6.2",
|
|
"multiparty": "4.2.2",
|
|
"node-abort-controller": "3.0.1",
|
|
"node-fetch": "2.6.7",
|
|
"pg": "8.6.0",
|
|
"plotly.js-basic-dist": "2.13.2",
|
|
"popper-max-size-modifier": "0.2.0",
|
|
"popweasel": "0.1.18",
|
|
"qrcode": "1.5.0",
|
|
"randomcolor": "0.5.3",
|
|
"redis": "3.1.1",
|
|
"redlock": "3.1.2",
|
|
"saml2-js": "2.0.5",
|
|
"short-uuid": "3.1.1",
|
|
"tmp": "0.0.33",
|
|
"ts-interface-checker": "1.0.2",
|
|
"typeorm": "0.3.9",
|
|
"underscore": "1.12.1",
|
|
"uuid": "3.3.2",
|
|
"winston": "2.4.5",
|
|
"ws": "6.2.2"
|
|
},
|
|
"resolutions": {
|
|
"jquery": "3.5.0",
|
|
"ts-interface-checker": "1.0.2",
|
|
"@gristlabs/sqlite3": "5.1.4-grist.8"
|
|
}
|
|
}
|