Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
bf100de
brave
Mar 13, 2025
6a64870
fix config
Mar 13, 2025
ce68288
keyring
Mar 13, 2025
6ae05dd
nightwatch
Mar 13, 2025
2cd7977
install webdriver
Mar 13, 2025
a20b6ad
nightly
Mar 13, 2025
a128e09
nightly
Mar 13, 2025
56322d3
metamask to nightly
Mar 13, 2025
8389372
run metamask
Mar 13, 2025
2bb43ad
filter string
Mar 13, 2025
d8ddfd4
default
Mar 13, 2025
f9a76c0
add pipeline parameter
Mar 13, 2025
65b714b
script
Mar 13, 2025
a7ecde4
nightly
Mar 14, 2025
666696e
config
Mar 14, 2025
838deed
test param
Mar 14, 2025
dd083f9
split tests
Mar 14, 2025
9ded0b3
test nightly
Mar 14, 2025
6f64185
filter
Mar 15, 2025
3f1c19c
or ilter
Mar 18, 2025
9facc4e
string
Mar 18, 2025
8092a3c
unless
Mar 18, 2025
ba21110
filter
Mar 18, 2025
92e4958
unless
Mar 18, 2025
79730c8
night
Mar 18, 2025
0ca0127
filter
Mar 18, 2025
e06d75c
build script
Mar 18, 2025
e342d1f
cpus
Mar 18, 2025
465856c
ncproc
Mar 18, 2025
492a406
env
Mar 18, 2025
90eebe1
env2
Mar 18, 2025
c1f74b6
use machine
Mar 18, 2025
00f9af7
nvm
Mar 18, 2025
63eae88
nvm
Mar 18, 2025
e21fe3e
config
Mar 18, 2025
95a76c6
config
Mar 18, 2025
ef1072d
nvm
Mar 18, 2025
9651c53
add yarn
Mar 18, 2025
1f93817
nvm
Mar 18, 2025
a29239e
verbose
Mar 18, 2025
db5bf4e
config
Mar 18, 2025
105e629
config
Mar 18, 2025
cc681dd
affected
Mar 18, 2025
5c5a51d
config
Mar 18, 2025
96ab035
docker
Mar 18, 2025
3c2d4b2
cimg
Mar 18, 2025
4e623a1
rm install
Mar 18, 2025
8033974
no nvm
Mar 18, 2025
bc066e4
build script
Mar 19, 2025
6201915
test filter
Mar 19, 2025
8cd353c
see logs
Mar 19, 2025
5c6ef27
more filter
Mar 19, 2025
7abcfff
test filter
Mar 19, 2025
0a58d6f
test filter
Mar 19, 2025
d7e43e9
filter
Mar 19, 2025
db86698
use sed
Mar 19, 2025
16de98c
don't run when filter
Mar 19, 2025
0799e3f
unless
Mar 19, 2025
cb73de7
use and
Mar 19, 2025
0a0d33f
condition
Mar 19, 2025
f8c4ec2
filtered-tests
Mar 19, 2025
1abb566
filtered-tests
Mar 19, 2025
2785030
build
Mar 19, 2025
5e94a88
set filter as alias
Mar 19, 2025
3c4c3f2
alias
Mar 19, 2025
f958e70
undo
Mar 19, 2025
ac26011
name
Mar 19, 2025
32f2e6a
trigger
Mar 19, 2025
d8a8bbe
logging
Mar 19, 2025
1783396
config
Mar 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 101 additions & 7 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,36 +3,47 @@ parameters:
run_flaky_tests:
type: boolean
default: false
nightly:
type: boolean
default: false
filter:
type: string
default: 'run,search,url,deploy,ballot'
orbs:
browser-tools: circleci/[email protected]
win: circleci/[email protected]
node: circleci/[email protected]
nx: nrwl/[email protected]
jobs:
build:
docker:
- image: cimg/node:20.0.0-browsers

- image: cimg/node:20.0.0
resource_class:
xlarge
working_directory: ~/remix-project
environment:
NX_PARALLEL: 6
steps:
- run: nproc
- run: sudo apt update && sudo apt install zstd
- checkout
- restore_cache:
keys:
- v1-deps-{{ checksum "yarn.lock" }}
- run: yarn
- run: yarn install --frozen-lockfile
- save_cache:
key: v1-deps-{{ checksum "yarn.lock" }}
paths:
- node_modules
- nx/set-shas:
main-branch-name: master
- run:
name: Build
command: |
if [ "${CIRCLE_BRANCH}" == "master" ]; then
NX_BIN_URL=http://127.0.0.1:8080/assets/js/soljson NX_WASM_URL=http://127.0.0.1:8080/assets/js/soljson NX_NPM_URL=http://127.0.0.1:9090/ yarn build:production
NX_PARALLEL=6 NX_BIN_URL=http://127.0.0.1:8080/assets/js/soljson NX_WASM_URL=http://127.0.0.1:8080/assets/js/soljson NX_NPM_URL=http://127.0.0.1:9090/ yarn build:production
else
NX_BIN_URL=http://127.0.0.1:8080/assets/js/soljson NX_WASM_URL=http://127.0.0.1:8080/assets/js/soljson NX_NPM_URL=http://127.0.0.1:9090/ yarn build
NX_PARALLEL=6 NX_BIN_URL=http://127.0.0.1:8080/assets/js/soljson NX_WASM_URL=http://127.0.0.1:8080/assets/js/soljson NX_NPM_URL=http://127.0.0.1:9090/ yarn build
fi
- run: yarn run build:e2e

Expand Down Expand Up @@ -669,6 +680,23 @@ jobs:
- run: mkdir node_modules/hardhat && wget https://unpkg.com/hardhat/console.sol -O node_modules/hardhat/console.sol
- run: ls -la ./dist/apps/remix-ide/assets/js

- when:
condition:
equal: [ "brave", << parameters.browser >> ]
steps:
- run: yarn install_webdriver
- run:
name: Install Brave Browser
command: |
sudo apt update
sudo apt install -y curl gnupg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg | sudo tee /etc/apt/keyrings/brave-browser-archive-keyring.gpg >/dev/null
echo "deb [signed-by=/etc/apt/keyrings/brave-browser-archive-keyring.gpg] https://brave-browser-apt-release.s3.brave.com/ stable main" | sudo tee /etc/apt/sources.list.d/brave-browser-release.list
sudo apt update && sudo apt install -y brave-browser
- run:
name: Check Brave Version
command: brave-browser --version
- when:
condition:
equal: [ "chrome", << parameters.browser >> ]
Expand All @@ -691,7 +719,7 @@ jobs:
install-chromedriver: false
- run: yarn install_webdriver
- run: firefox --version
- run: ./apps/remix-ide/ci/<< parameters.script >> << parameters.browser >> << parameters.jobsize >> << parameters.job >>
- run: ./apps/remix-ide/ci/<< parameters.script >> << parameters.browser >> << parameters.jobsize >> << parameters.job >> << pipeline.parameters.filter >>
- store_test_results:
path: ./reports/tests
- store_artifacts:
Expand Down Expand Up @@ -799,8 +827,62 @@ workflows:
job: ["nogroup"]
jobsize: ["1"]
parallelism: [5]
nightly-tests:
when: << pipeline.parameters.nightly >> # ✅ Conditional workflow execution
jobs:
- build
# - remix-ide-browser:
# requires:
# - build
# matrix:
# alias: nightly-brave-tests
# parameters:
# browser: ["brave"] # ✅ Brave only runs if nightly=true
# script: ["browser_test.sh"]
# job: ["0","1","2","3","4","5","6","7","8","9"]
# jobsize: ["10"]
# parallelism: [15]
- remix-ide-browser:
requires:
- build
matrix:
alias: nightly-tests
parameters:
browser: ["chrome"]
script: ["nightly.sh"]
job: ["0"]
jobsize: ["1"]
parallelism: [15]
# - remix-ide-browser:
# requires:
# - build
# matrix:
# alias: metamask
# parameters:
# browser: ["chrome", "brave"]
# script: ["metamask.sh"]
# job: ["0"]
# jobsize: ["10"]
# parallelism: [1]
filtered-tests:
when: << pipeline.parameters.filter >> # ✅ Conditional workflow execution
jobs:
- build
- remix-ide-browser:
requires:
- build
matrix:
parameters:
browser: ["chrome"]
script: ["browser_test.sh"]
job: ["0"]
jobsize: ["1"]
parallelism: [15]
build_all:
unless: << pipeline.parameters.run_flaky_tests >>
when:
and:
- not: << pipeline.parameters.run_flaky_tests >>
- not: << pipeline.parameters.filter >>
jobs:
- build
- build-desktop
Expand Down Expand Up @@ -887,6 +969,7 @@ workflows:
job: ["0","1","2","3","4","5","6","7","8","9"]
jobsize: ["10"]
parallelism: [15]

- remix-ide-browser:
requires:
- build
Expand Down Expand Up @@ -953,4 +1036,15 @@ workflows:
branches:
only: remix_beta


trigger:
- &detect_fork
name: "Detect if PR is a fork"
command: |
if [[ -z "$CIRCLE_PR_REPONAME" ]]; then
echo "export IS_FORK=false" >> $BASH_ENV
else
echo "export IS_FORK=true" >> $BASH_ENV
fi

# VS Code Extension Version: 1.5.1
48 changes: 48 additions & 0 deletions .nx/workspace-data/d/daemon.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:33.746Z - Started listening on: /var/folders/qv/xmjp70m950b67kdf04fcx00h0000gn/T/26481ed23dae92d5c286/d.sock
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:33.748Z - [WATCHER]: Subscribed to changes within: /Users/filipmertens/Documents/code/remix-project (native)
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:33.757Z - Established a connection. Number of open connections: 1
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:33.758Z - Established a connection. Number of open connections: 2
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:33.758Z - Closed a connection. Number of open connections: 1
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:33.759Z - [REQUEST]: Responding to the client. Shutdown initiated
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:33.759Z - Done responding to the client Shutdown initiated
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:33.759Z - Handled FORCE_SHUTDOWN. Handling time: 0. Response time: 0.
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:33.760Z - Closed a connection. Number of open connections: 0
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:33.760Z - [WATCHER]: Stopping the watcher for /Users/filipmertens/Documents/code/remix-project (sources)
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:33.760Z - [WATCHER]: Stopping the watcher for /Users/filipmertens/Documents/code/remix-project (outputs)
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:33.760Z - Server stopped because: "Request to shutdown"
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:54.527Z - Started listening on: /var/folders/qv/xmjp70m950b67kdf04fcx00h0000gn/T/26481ed23dae92d5c286/d.sock
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:54.532Z - [WATCHER]: Subscribed to changes within: /Users/filipmertens/Documents/code/remix-project (native)
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:54.533Z - Established a connection. Number of open connections: 1
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:54.533Z - Established a connection. Number of open connections: 2
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:54.534Z - Closed a connection. Number of open connections: 1
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:54.534Z - [REQUEST]: Responding to the client. Shutdown initiated
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:54.535Z - Done responding to the client Shutdown initiated
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:54.535Z - Handled FORCE_SHUTDOWN. Handling time: 0. Response time: 1.
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:54.536Z - [WATCHER]: Stopping the watcher for /Users/filipmertens/Documents/code/remix-project (sources)
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:54.536Z - Closed a connection. Number of open connections: 0
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:54.536Z - [WATCHER]: Stopping the watcher for /Users/filipmertens/Documents/code/remix-project (outputs)
[NX v20.6.1 Daemon Server] - 2025-03-19T06:48:54.537Z - Server stopped because: "Request to shutdown"
[NX v20.6.1 Daemon Server] - 2025-03-19T06:49:27.139Z - Started listening on: /var/folders/qv/xmjp70m950b67kdf04fcx00h0000gn/T/26481ed23dae92d5c286/d.sock
[NX v20.6.1 Daemon Server] - 2025-03-19T06:49:27.142Z - [WATCHER]: Subscribed to changes within: /Users/filipmertens/Documents/code/remix-project (native)
[NX v20.6.1 Daemon Server] - 2025-03-19T06:49:27.144Z - Established a connection. Number of open connections: 1
[NX v20.6.1 Daemon Server] - 2025-03-19T06:49:27.145Z - Established a connection. Number of open connections: 2
[NX v20.6.1 Daemon Server] - 2025-03-19T06:49:27.147Z - Closed a connection. Number of open connections: 1
[NX v20.6.1 Daemon Server] - 2025-03-19T06:49:27.148Z - [REQUEST]: Responding to the client. Shutdown initiated
[NX v20.6.1 Daemon Server] - 2025-03-19T06:49:27.148Z - Done responding to the client Shutdown initiated
[NX v20.6.1 Daemon Server] - 2025-03-19T06:49:27.148Z - Handled FORCE_SHUTDOWN. Handling time: 0. Response time: 0.
[NX v20.6.1 Daemon Server] - 2025-03-19T06:49:27.150Z - [WATCHER]: Stopping the watcher for /Users/filipmertens/Documents/code/remix-project (sources)
[NX v20.6.1 Daemon Server] - 2025-03-19T06:49:27.150Z - Closed a connection. Number of open connections: 0
[NX v20.6.1 Daemon Server] - 2025-03-19T06:49:27.150Z - [WATCHER]: Stopping the watcher for /Users/filipmertens/Documents/code/remix-project (outputs)
[NX v20.6.1 Daemon Server] - 2025-03-19T06:49:27.150Z - Server stopped because: "Request to shutdown"
[NX v20.6.1 Daemon Server] - 2025-03-19T06:50:46.973Z - Started listening on: /var/folders/qv/xmjp70m950b67kdf04fcx00h0000gn/T/26481ed23dae92d5c286/d.sock
[NX v20.6.1 Daemon Server] - 2025-03-19T06:50:46.976Z - [WATCHER]: Subscribed to changes within: /Users/filipmertens/Documents/code/remix-project (native)
[NX v20.6.1 Daemon Server] - 2025-03-19T06:50:46.982Z - Established a connection. Number of open connections: 1
[NX v20.6.1 Daemon Server] - 2025-03-19T06:50:46.982Z - Established a connection. Number of open connections: 2
[NX v20.6.1 Daemon Server] - 2025-03-19T06:50:46.983Z - Closed a connection. Number of open connections: 1
[NX v20.6.1 Daemon Server] - 2025-03-19T06:50:46.984Z - [REQUEST]: Responding to the client. Shutdown initiated
[NX v20.6.1 Daemon Server] - 2025-03-19T06:50:46.984Z - Done responding to the client Shutdown initiated
[NX v20.6.1 Daemon Server] - 2025-03-19T06:50:46.984Z - Handled FORCE_SHUTDOWN. Handling time: 0. Response time: 1.
[NX v20.6.1 Daemon Server] - 2025-03-19T06:50:46.985Z - [WATCHER]: Stopping the watcher for /Users/filipmertens/Documents/code/remix-project (sources)
[NX v20.6.1 Daemon Server] - 2025-03-19T06:50:46.985Z - Closed a connection. Number of open connections: 0
[NX v20.6.1 Daemon Server] - 2025-03-19T06:50:46.985Z - [WATCHER]: Stopping the watcher for /Users/filipmertens/Documents/code/remix-project (outputs)
[NX v20.6.1 Daemon Server] - 2025-03-19T06:50:46.986Z - Server stopped because: "Request to shutdown"
112 changes: 112 additions & 0 deletions apps/remix-ide-e2e/nightwatch-brave.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
import * as fs from 'fs';
import * as os from 'os';
import * as path from 'path';

const crxFile = fs.readFileSync('apps/remix-ide-e2e/src/extensions/chrome/11.13.1_0.crx');
const metamaskExtension = crxFile.toString('base64');

// Function to find the Brave binary path based on the OS
const getBravePath = () => {
const platform = os.platform();
if (platform === 'darwin') {
return '/Applications/Brave Browser.app/Contents/MacOS/Brave Browser';
} else if (platform === 'win32') {
const possiblePaths = [
'C:\\Program Files\\BraveSoftware\\Brave-Browser\\Application\\brave.exe',
'C:\\Program Files (x86)\\BraveSoftware\\Brave-Browser\\Application\\brave.exe',
];
return possiblePaths.find(fs.existsSync) || 'brave.exe'; // Default to PATH lookup
} else {
return '/usr/bin/brave-browser'; // Linux default
}
};

const braveBinary = getBravePath();

module.exports = {
src_folders: ['dist/apps/remix-ide-e2e/src/tests'],
output_folder: './reports/tests',
custom_commands_path: ['dist/apps/remix-ide-e2e/src/commands'],
custom_assertions_path: '',
page_objects_path: '',
globals_path: '',

webdriver: {
start_process: true,
port: 9515,
server_path: './tmp/webdrivers/node_modules/chromedriver/bin/chromedriver',
},

test_settings: {
'default': {
globals: {
waitForConditionTimeout: 10000,
asyncHookTimeout: 10000000
},
screenshots: {
enabled: true,
path: './reports/screenshots',
on_failure: true,
on_error: true
},
exclude: ['dist/apps/remix-ide-e2e/src/tests/runAndDeploy.test.js', 'dist/apps/remix-ide-e2e/src/tests/pluginManager.test.ts']
},

'brave': {
desiredCapabilities: {
'browserName': 'chrome',
'javascriptEnabled': true,
'acceptSslCerts': true,
'goog:chromeOptions': {
binary: braveBinary, // Dynamic Brave binary path
args: [
'window-size=2560,1440',
'--no-sandbox',
'--headless=new', // Enable headless mode for CI
'--verbose',
'--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'
],
extensions: [metamaskExtension]
}
}
},

'braveDesktop': {
desiredCapabilities: {
'browserName': 'chrome',
'javascriptEnabled': true,
'acceptSslCerts': true,
'goog:chromeOptions': {
binary: braveBinary,
args: ['window-size=2560,1440', 'start-fullscreen', '--no-sandbox', '--verbose']
}
}
},

'braveDesktopMetamask': {
desiredCapabilities: {
'browserName': 'chrome',
'javascriptEnabled': true,
'acceptSslCerts': true,
'goog:chromeOptions': {
binary: braveBinary,
args: ['window-size=2560,1440', '--no-sandbox', '--verbose'],
extensions: [metamaskExtension]
}
}
},

'brave-runAndDeploy': {
desiredCapabilities: {
'browserName': 'chrome',
'javascriptEnabled': true,
'acceptSslCerts': true,
'goog:chromeOptions': {
binary: braveBinary,
args: ['window-size=2560,1440', 'start-fullscreen', '--no-sandbox', '--headless', '--verbose'],
extensions: [metamaskExtension]
}
}
}
}
};
Loading