smaller yarn

rm checkout browser

ls -la

mv scripts

mv scripts

extra dep

change script

build:e2e

mv scripts

mv script

selenium

mv script

ls

ls

ls

ls

nightwatch

add tslib

deep-equal

serve

tree-kill

remixd

log

remixd

debug

undo

yarn e2e

add remixd

update

revert

no wget

package

do not build e2e

debug

add nightwatch

update pack

if master branch

config

config

config

confihg

config

config

rename

config

config

config

config

remove deps

split test

more groups

rm pause

rm pause

plugins build

plugin tests

update config

permissions

packages

update ports

config

config

config

config

rename

matrix build

update name

rm files

rm typescript

rename
pull/3491/head
filip mertens 2 years ago committed by yann300
parent 58f83705ef
commit fcefbf639e
  1. 98
      .circleci/config.yml
  2. 3
      apps/etherscan/project.json
  3. 28
      apps/remix-ide-e2e/package.json
  4. 13
      apps/remix-ide-e2e/src/local-plugin/project.json
  5. 2
      apps/remix-ide-e2e/src/tests/etherscan_api.ts
  6. 2
      apps/remix-ide-e2e/src/tests/plugin_api.ts
  7. 9
      apps/remix-ide-e2e/src/tests/recorder.test.ts
  8. 2
      apps/remix-ide-e2e/src/tests/remixd.test.ts
  9. 2
      apps/remix-ide-e2e/src/tests/vyper_api.ts
  10. 3936
      apps/remix-ide-e2e/yarn.lock
  11. 3
      apps/remix-ide/ci/browser_test.sh
  12. 6
      apps/remix-ide/ci/browser_test_plugin.sh
  13. 26
      apps/remix-ide/ci/browser_tests_etherscan_plugin.sh
  14. 26
      apps/remix-ide/ci/browser_tests_vyper_plugin.sh
  15. 5
      apps/remix-ide/ci/flaky.sh
  16. 3
      apps/vyper/project.json

@ -24,21 +24,55 @@ jobs:
key: v1-deps-{{ checksum "yarn.lock" }} key: v1-deps-{{ checksum "yarn.lock" }}
paths: paths:
- node_modules - node_modules
- run: NX_BIN_URL=http://127.0.0.1:8080/assets/js NX_WASM_URL=http://127.0.0.1:8080/assets/js NPM_URL=http://localhost:9090/ yarn build:production - run:
- run: yarn nx build remix-ide-e2e-src-local-plugin & yarn run build:libs name: Build
- run: yarn nx run remixd:build command: |
if [ "${CIRCLE_BRANCH}" == "master" ]; then
NX_BIN_URL=http://127.0.0.1:8080/assets/js NX_WASM_URL=http://127.0.0.1:8080/assets/js NPM_URL=http://localhost:9090/ yarn build:production
else
NX_BIN_URL=http://127.0.0.1:8080/assets/js NX_WASM_URL=http://127.0.0.1:8080/assets/js NPM_URL=http://localhost:9090/ yarn build
fi
- run: yarn run build:e2e
- run: mkdir persist && zip -0 -r persist/dist.zip dist - run: mkdir persist && zip -0 -r persist/dist.zip dist
- persist_to_workspace: - persist_to_workspace:
root: . root: .
paths: paths:
- "persist" - "persist"
build-plugin:
docker:
- image: cimg/node:14.17.6-browsers
resource_class:
xlarge
working_directory: ~/remix-project
parameters:
plugin:
type: string
steps:
- checkout
- restore_cache:
keys:
- v1-deps-{{ checksum "yarn.lock" }}
- run: yarn
- save_cache:
key: v1-deps-{{ checksum "yarn.lock" }}
paths:
- node_modules
- run: yarn build << parameters.plugin >>
- run: mkdir persist && zip -0 -r persist/plugin-<< parameters.plugin >>.zip dist
- persist_to_workspace:
root: .
paths:
- "persist"
lint: lint:
docker: docker:
- image: cimg/node:14.17.6-browsers - image: cimg/node:14.17.6-browsers
resource_class: resource_class:
xlarge xlarge
working_directory: ~/remix-project working_directory: ~/remix-project
parallelism: 1
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -60,11 +94,11 @@ jobs:
- checkout - checkout
- attach_workspace: - attach_workspace:
at: . at: .
- run: unzip ./persist/dist.zip
- restore_cache: - restore_cache:
keys: keys:
- v1-deps-{{ checksum "yarn.lock" }} - v1-deps-{{ checksum "yarn.lock" }}
- run: yarn - run: yarn
- run: yarn build:libs
- run: cd dist/libs/remix-tests && yarn - run: cd dist/libs/remix-tests && yarn
- run: cd dist/libs/remix-tests && yarn add @remix-project/remix-url-resolver ../../libs/remix-url-resolver - run: cd dist/libs/remix-tests && yarn add @remix-project/remix-url-resolver ../../libs/remix-url-resolver
- run: cd dist/libs/remix-tests && yarn add @remix-project/remix-lib ../../libs/remix-lib - run: cd dist/libs/remix-tests && yarn add @remix-project/remix-lib ../../libs/remix-lib
@ -117,12 +151,8 @@ jobs:
- checkout - checkout
- attach_workspace: - attach_workspace:
at: . at: .
- run: unzip ./persist/dist.zip - run: unzip ./persist/dist.zip
- run: yarn install --cwd ./apps/remix-ide-e2e --modules-folder ../../node_modules
- restore_cache:
keys:
- v1-deps-{{ checksum "yarn.lock" }}
- run: yarn
- run: yarn run downloadsolc_assets_e2e && yarn run downloadsolc_assets_dist - run: yarn run downloadsolc_assets_e2e && yarn run downloadsolc_assets_dist
- run: ls -la ./dist/apps/remix-ide/assets/js - run: ls -la ./dist/apps/remix-ide/assets/js
- run: yarn run selenium-install || yarn run selenium-install - run: yarn run selenium-install || yarn run selenium-install
@ -149,9 +179,12 @@ jobs:
xlarge xlarge
working_directory: ~/remix-project working_directory: ~/remix-project
parameters: parameters:
script: plugin:
type: string type: string
parallelism: 4 parallelism:
type: integer
default: 1
parallelism: << parameters.parallelism >>
steps: steps:
- browser-tools/install-browser-tools: - browser-tools/install-browser-tools:
install-firefox: false install-firefox: false
@ -164,19 +197,16 @@ jobs:
- checkout - checkout
- attach_workspace: - attach_workspace:
at: . at: .
- restore_cache:
keys:
- v1-deps-{{ checksum "yarn.lock" }}
- run: yarn
- run: unzip ./persist/dist.zip - run: unzip ./persist/dist.zip
- run: unzip ./persist/plugin-<< parameters.plugin >>.zip
- run: yarn install --cwd ./apps/remix-ide-e2e --modules-folder ../../node_modules
- run: yarn run downloadsolc_assets_e2e && yarn run downloadsolc_assets_dist - run: yarn run downloadsolc_assets_e2e && yarn run downloadsolc_assets_dist
- run: yarn run selenium-install || yarn run selenium-install - run: yarn run selenium-install || yarn run selenium-install
- run: - run:
name: Start Selenium name: Start Selenium
command: yarn run selenium command: yarn run selenium
background: true background: true
- run: ./apps/remix-ide/ci/<< parameters.script >> - run: ./apps/remix-ide/ci/browser_test_plugin.sh << parameters.plugin >>
- store_test_results: - store_test_results:
path: ./reports/tests path: ./reports/tests
- store_artifacts: - store_artifacts:
@ -273,18 +303,32 @@ workflows:
unless: << pipeline.parameters.run_flaky_tests >> unless: << pipeline.parameters.run_flaky_tests >>
jobs: jobs:
- build - build
- build-plugin:
matrix:
parameters:
plugin: ["etherscan", "vyper", "plugin_api"]
- lint: - lint:
requires: requires:
- build - build
- remix-libs: - remix-libs
requires:
- build
- remix-test-plugins: - remix-test-plugins:
name: test-plugin-<< matrix.plugin >>
requires: requires:
- build - build
- build-plugin
matrix: matrix:
alias: testplugins
parameters: parameters:
script: ["browser_tests_plugin_api.sh", "browser_tests_etherscan_plugin.sh", "browser_tests_vyper_plugin.sh"] plugin: ["etherscan", "vyper", "plugin_api"]
parallelism: [1, 9]
exclude:
- plugin: plugin_api
parallelism: 1
- plugin: etherscan
parallelism: 9
- plugin: vyper
parallelism: 9
- remix-ide-browser: - remix-ide-browser:
requires: requires:
- build - build
@ -299,13 +343,13 @@ workflows:
- lint - lint
- remix-libs - remix-libs
- remix-ide-browser - remix-ide-browser
- remix-test-plugins - testplugins
- deploy-remix-live: - deploy-remix-live:
requires: requires:
- lint - lint
- remix-libs - remix-libs
- remix-ide-browser - remix-ide-browser
- remix-test-plugins - testplugins
filters: filters:
branches: branches:
only: remix_live only: remix_live
@ -314,7 +358,7 @@ workflows:
- lint - lint
- remix-libs - remix-libs
- remix-ide-browser - remix-ide-browser
- remix-test-plugins - testplugins
filters: filters:
branches: branches:
only: master only: master
@ -323,7 +367,7 @@ workflows:
- lint - lint
- remix-libs - remix-libs
- remix-ide-browser - remix-ide-browser
- remix-test-plugins - testplugins
filters: filters:
branches: branches:
only: remix_beta only: remix_beta

@ -3,9 +3,6 @@
"$schema": "../../node_modules/nx/schemas/project-schema.json", "$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "apps/etherscan/src", "sourceRoot": "apps/etherscan/src",
"projectType": "application", "projectType": "application",
"implicitDependencies": [
"remix-debug"
],
"targets": { "targets": {
"build": { "build": {
"executor": "@nrwl/webpack:webpack", "executor": "@nrwl/webpack:webpack",

@ -0,0 +1,28 @@
{
"name": "remix-ide-e2e",
"license": "MIT",
"engines": {
"node": "^14.17.6",
"npm": "^6.14.15"
},
"scripts": {
"remixd": "chmod +x dist/libs/remixd/src/bin/remixd.js && dist/libs/remixd/src/bin/remixd.js --remix-ide http://127.0.0.1:8080"
},
"dependencies": {
"@openzeppelin/contracts": "^4.7.3",
"@openzeppelin/contracts-upgradeable": "^4.8.1",
"@openzeppelin/upgrades-core": "^1.22.0",
"@openzeppelin/wizard": "^0.1.1",
"@remix-project/remixd": "../../dist/libs/remixd",
"axios": "1.1.2",
"deep-equal": "^1.0.1",
"ganache-cli": "^6.8.1",
"selenium-standalone": "^8.2.3",
"tree-kill": "^1.2.2",
"tslib": "^2.3.0"
},
"devDependencies": {
"http-server": "^14.1.1",
"nightwatch": "2.3"
}
}

@ -1,11 +1,8 @@
{ {
"name": "remix-ide-e2e-src-local-plugin", "name": "plugin_api",
"$schema": "../../node_modules/nx/schemas/project-schema.json", "$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "apps/remix-ide-e2e/src/local-plugin/src/", "sourceRoot": "apps/remix-ide-e2e/src/local-plugin/src/",
"projectType": "application", "projectType": "application",
"implicitDependencies": [
"remix-debug"
],
"targets": { "targets": {
"build": { "build": {
"executor": "@nrwl/webpack:webpack", "executor": "@nrwl/webpack:webpack",
@ -13,7 +10,7 @@
"defaultConfiguration": "development", "defaultConfiguration": "development",
"options": { "options": {
"compiler": "babel", "compiler": "babel",
"outputPath": "dist/apps/remix-ide-e2e-src-local-plugin", "outputPath": "dist/apps/plugin_api",
"index": "apps/remix-ide-e2e/src/local-plugin/src/index.html", "index": "apps/remix-ide-e2e/src/local-plugin/src/index.html",
"baseHref": "/", "baseHref": "/",
"main": "apps/remix-ide-e2e/src/local-plugin/src/main.tsx", "main": "apps/remix-ide-e2e/src/local-plugin/src/main.tsx",
@ -44,16 +41,16 @@
"executor": "@nrwl/webpack:dev-server", "executor": "@nrwl/webpack:dev-server",
"defaultConfiguration": "development", "defaultConfiguration": "development",
"options": { "options": {
"buildTarget": "remix-ide-e2e-src-local-plugin:build", "buildTarget": "plugin_api:build",
"hmr": true "hmr": true
}, },
"configurations": { "configurations": {
"development": { "development": {
"buildTarget": "remix-ide-e2e-src-local-plugin:build:development", "buildTarget": "plugin_api:build:development",
"port": 2020 "port": 2020
}, },
"production": { "production": {
"buildTarget": "remix-ide-e2e-src-local-plugin:build:production" "buildTarget": "plugin_api:build:production"
} }
} }
} }

@ -9,7 +9,7 @@ declare global {
module.exports = { module.exports = {
'@disabled': true, '@disabled': true,
before: function (browser: NightwatchBrowser, done: VoidFunction) { before: function (browser: NightwatchBrowser, done: VoidFunction) {
init(browser, done, null, true, { name: 'etherscan', url: 'http://127.0.0.1:5003'}) init(browser, done, null, true, { name: 'etherscan', url: 'http://127.0.0.1:9999'})
}, },
'Should load etherscan plugin #group1': function (browser: NightwatchBrowser) { 'Should load etherscan plugin #group1': function (browser: NightwatchBrowser) {

@ -11,7 +11,7 @@ const localPluginData: Profile & LocationProfile & ExternalProfile = {
name: 'localPlugin', name: 'localPlugin',
displayName: 'Local Plugin', displayName: 'Local Plugin',
canActivate: ['dGitProvider', 'flattener', 'solidityUnitTesting', 'udapp', 'hardhat-provider'], canActivate: ['dGitProvider', 'flattener', 'solidityUnitTesting', 'udapp', 'hardhat-provider'],
url: 'http://localhost:2020', url: 'http://localhost:9999',
location: 'sidePanel' location: 'sidePanel'
} }

@ -68,10 +68,9 @@ module.exports = {
}) })
}, },
'Record more than one contract #group1': function (browser: NightwatchBrowser) { 'Record more than one contract #group2': function (browser: NightwatchBrowser) {
// deploy 2 contracts (2 different ABIs), save the record, reexecute and test one of the function. // deploy 2 contracts (2 different ABIs), save the record, reexecute and test one of the function.
browser browser
.click('*[data-id="deployAndRunClearInstances"]')
.testContracts('multipleContracts.sol', sources[1]['multipleContracts.sol'], ['t1est', 't2est']) .testContracts('multipleContracts.sol', sources[1]['multipleContracts.sol'], ['t1est', 't2est'])
.clickLaunchIcon('udapp') .clickLaunchIcon('udapp')
.selectContract('t1est') .selectContract('t1est')
@ -81,6 +80,7 @@ module.exports = {
.selectContract('t2est') .selectContract('t2est')
.pause(1000) .pause(1000)
.createContract('') .createContract('')
.click('[data-id="udappRecorderTitleExpander"]')
.click('.savetransaction') .click('.savetransaction')
.waitForElementVisible('[data-id="udappNotify-modal-footer-ok-react"]') .waitForElementVisible('[data-id="udappNotify-modal-footer-ok-react"]')
.execute(function () { .execute(function () {
@ -92,8 +92,7 @@ module.exports = {
.click('*[data-id="deployAndRunClearInstances"]') // clear udapp .click('*[data-id="deployAndRunClearInstances"]') // clear udapp
.click('*[data-id="terminalClearConsole"]') // clear terminal .click('*[data-id="terminalClearConsole"]') // clear terminal
.click('[data-id="runtransaction"]') .click('[data-id="runtransaction"]')
.clickInstance(2) .clickInstance(1)
.pause(1000)
.clickFunction('set2 - transact (not payable)', { types: 'uint256 _po', values: '10' }) .clickFunction('set2 - transact (not payable)', { types: 'uint256 _po', values: '10' })
.testFunction('last', .testFunction('last',
{ {
@ -103,7 +102,7 @@ module.exports = {
}, },
'Run with live "mode" #group1': function (browser: NightwatchBrowser) { 'Run with live "mode" #group2': function (browser: NightwatchBrowser) {
let addressRef: string let addressRef: string
browser.addFile('scenario_live_mode.json', { content: JSON.stringify(liveModeScenario, null, '\t') }) browser.addFile('scenario_live_mode.json', { content: JSON.stringify(liveModeScenario, null, '\t') })
.addFile('scenario_live_mode_storage.sol', { content: testStorageForLiveMode }) .addFile('scenario_live_mode_storage.sol', { content: testStorageForLiveMode })

@ -312,7 +312,7 @@ function testImportFromRemixd(browser: NightwatchBrowser, callback: VoidFunction
} }
async function spawnRemixd(path: string): Promise<ChildProcess> { async function spawnRemixd(path: string): Promise<ChildProcess> {
const remixd = spawn('yarn run remixd', [`-s ${path}`], { cwd: process.cwd(), shell: true, detached: true }) const remixd = spawn('chmod +x dist/libs/remixd/src/bin/remixd.js && dist/libs/remixd/src/bin/remixd.js --remix-ide http://127.0.0.1:8080', [`-s ${path}`], { cwd: process.cwd(), shell: true, detached: true })
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
remixd.stdout.on('data', function (data) { remixd.stdout.on('data', function (data) {
if( if(

@ -9,7 +9,7 @@ declare global {
module.exports = { module.exports = {
'@disabled': true, '@disabled': true,
before: function (browser: NightwatchBrowser, done: VoidFunction) { before: function (browser: NightwatchBrowser, done: VoidFunction) {
init(browser, done, null, true, { name: 'vyper', url: 'http://127.0.0.1:5002'}) init(browser, done, null, true, { name: 'vyper', url: 'http://127.0.0.1:9999'})
}, },
'Should connect to vyper plugin #group1': function (browser: NightwatchBrowser) { 'Should connect to vyper plugin #group1': function (browser: NightwatchBrowser) {

File diff suppressed because it is too large Load Diff

@ -10,11 +10,8 @@ TEST_EXITCODE=0
yarn run ganache-cli & yarn run ganache-cli &
npx http-server -p 9090 --cors='*' ./node_modules & npx http-server -p 9090 --cors='*' ./node_modules &
yarn run serve:production & yarn run serve:production &
echo 'sharing folder: ' $PWD '/apps/remix-ide/contracts' &
sleep 5 sleep 5
yarn run build:e2e
# grep -IRiL "@disabled" "dist/apps/remix-ide-e2e/src/tests" | grep "\.spec\|\.test" | xargs -I {} basename {} .test.js | grep -E "\b[${2}]" # grep -IRiL "@disabled" "dist/apps/remix-ide-e2e/src/tests" | grep "\.spec\|\.test" | xargs -I {} basename {} .test.js | grep -E "\b[${2}]"
# TESTFILES=$(grep -IRiL "@disabled" "dist/apps/remix-ide-e2e/src/tests" | grep "\.spec\|\.test" | xargs -I {} basename {} .test.js | grep -E "\b[$2]" | circleci tests split --split-by=timings ) # TESTFILES=$(grep -IRiL "@disabled" "dist/apps/remix-ide-e2e/src/tests" | grep "\.spec\|\.test" | xargs -I {} basename {} .test.js | grep -E "\b[$2]" | circleci tests split --split-by=timings )
node apps/remix-ide/ci/splice_tests.js $2 $3 node apps/remix-ide/ci/splice_tests.js $2 $3

@ -6,16 +6,14 @@ BUILD_ID=${CIRCLE_BUILD_NUM:-${TRAVIS_JOB_NUMBER}}
echo "$BUILD_ID" echo "$BUILD_ID"
TEST_EXITCODE=0 TEST_EXITCODE=0
npx http-server -p 9999 ./dist/apps/$1 &
yarn run ganache-cli & yarn run ganache-cli &
npx http-server -p 9090 --cors='*' ./node_modules & npx http-server -p 9090 --cors='*' ./node_modules &
yarn run serve:production & yarn run serve:production &
npx nx serve remix-ide-e2e-src-local-plugin &
sleep 5 sleep 5
yarn run build:e2e TESTFILES=$(grep -IRiL "\'@disabled\': \?true" "dist/apps/remix-ide-e2e/src/tests" | grep $1 | sort | circleci tests split )
TESTFILES=$(grep -IRiL "\'@disabled\': \?true" "dist/apps/remix-ide-e2e/src/tests" | grep "plugin_api" | sort | circleci tests split )
for TESTFILE in $TESTFILES; do for TESTFILE in $TESTFILES; do
npx nightwatch --config dist/apps/remix-ide-e2e/nightwatch.js $TESTFILE --env=chrome || TEST_EXITCODE=1 npx nightwatch --config dist/apps/remix-ide-e2e/nightwatch.js $TESTFILE --env=chrome || TEST_EXITCODE=1
done done

@ -1,26 +0,0 @@
#!/usr/bin/env bash
set -e
BUILD_ID=${CIRCLE_BUILD_NUM:-${TRAVIS_JOB_NUMBER}}
echo "$BUILD_ID"
TEST_EXITCODE=0
yarn build etherscan
yarn run serve:production &
npx nx serve etherscan &
sleep 5
yarn run build:e2e
TESTFILES=$(grep -IRiL "\'@disabled\': \?true" "dist/apps/remix-ide-e2e/src/tests" | grep "etherscan_api" | sort | circleci tests split )
for TESTFILE in $TESTFILES; do
npx nightwatch --config dist/apps/remix-ide-e2e/nightwatch.js $TESTFILE --env=chrome || TEST_EXITCODE=1
done
echo "$TEST_EXITCODE"
if [ "$TEST_EXITCODE" -eq 1 ]
then
exit 1
fi

@ -1,26 +0,0 @@
#!/usr/bin/env bash
set -e
BUILD_ID=${CIRCLE_BUILD_NUM:-${TRAVIS_JOB_NUMBER}}
echo "$BUILD_ID"
TEST_EXITCODE=0
yarn build vyper
yarn run serve:production &
npx nx serve vyper &
sleep 5
yarn run build:e2e
TESTFILES=$(grep -IRiL "\'@disabled\': \?true" "dist/apps/remix-ide-e2e/src/tests" | grep "vyper_api" | sort | circleci tests split )
for TESTFILE in $TESTFILES; do
npx nightwatch --config dist/apps/remix-ide-e2e/nightwatch.js $TESTFILE --env=chrome || TEST_EXITCODE=1
done
echo "$TEST_EXITCODE"
if [ "$TEST_EXITCODE" -eq 1 ]
then
exit 1
fi

@ -2,7 +2,6 @@
set -e set -e
yarn run build:e2e
TESTFILES=$(grep -IRiL "\'@disabled\': \?true" "dist/apps/remix-ide-e2e/src/tests" | grep "\.flaky" | sort ) TESTFILES=$(grep -IRiL "\'@disabled\': \?true" "dist/apps/remix-ide-e2e/src/tests" | grep "\.flaky" | sort )
# count test files # count test files
@ -19,10 +18,8 @@ echo "$BUILD_ID"
TEST_EXITCODE=0 TEST_EXITCODE=0
yarn run ganache-cli & yarn run ganache-cli &
npx http-server -p 9090 --cors='*' ./node_modules &
yarn run serve:production & yarn run serve:production &
echo 'sharing folder: ' $PWD '/apps/remix-ide/contracts' &
npx nx serve remix-ide-e2e-src-local-plugin &
sleep 5 sleep 5
for TESTFILE in $TESTFILES; do for TESTFILE in $TESTFILES; do

@ -3,9 +3,6 @@
"$schema": "../../node_modules/nx/schemas/project-schema.json", "$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "apps/vyper/src", "sourceRoot": "apps/vyper/src",
"projectType": "application", "projectType": "application",
"implicitDependencies": [
"remix-debug"
],
"targets": { "targets": {
"build": { "build": {
"executor": "@nrwl/webpack:webpack", "executor": "@nrwl/webpack:webpack",

Loading…
Cancel
Save