diff --git a/.eslintrc.js b/.eslintrc.js
index d641ea71541d..5d58c67c65d6 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -25,6 +25,7 @@ module.exports = {
'plugin:react/recommended',
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended',
+ 'plugin:react/jsx-runtime', // Enables the new JSX transform runtime
],
parserOptions: {
ecmaversion: 2018,
diff --git a/.github/actions/analyze/action.yml b/.github/actions/analyze/action.yml
index 9f9cb7dcf729..67bb65435af1 100644
--- a/.github/actions/analyze/action.yml
+++ b/.github/actions/analyze/action.yml
@@ -27,6 +27,9 @@ inputs:
DATADOG_SESSION_SAMPLE_RATE:
description: 'Datadog session sample rate'
required: false
+ GITHUB_TOKEN:
+ description: 'Github token for downloading artifacts'
+ required: true
GD_API_KEY:
description: 'Google drive api key'
required: false
@@ -54,10 +57,51 @@ inputs:
IS_GROWTHBOOK_ENABLED:
description: 'Is growthbook enabled'
required: true
+ ISSUE_NUMBER:
+ description: 'Issue to post a comment to'
+ required: false
+ TRUSTPILOT_API_KEY:
+ description: 'Trustpilot api key'
+ required: false
runs:
using: composite
steps:
+ - name: Get artifact URL
+ id: get_artifact_url
+ env:
+ GITHUB_TOKEN: ${{ inputs.GITHUB_TOKEN }}
+ shell: bash
+ run: |
+ RESPONSE=$(curl -s -H "Authorization: Bearer $GITHUB_TOKEN" \
+ "https://api.github.com/repos/${{ github.repository }}/actions/artifacts?name=analyse")
+
+ ARTIFACT_URL=$(echo $RESPONSE | jq -r '.artifacts[0].archive_download_url')
+
+ if [[ -z "$ARTIFACT_URL" ]]; then
+ echo "Error: No artifact URL found for the master branch with prefix 'analyse'."
+ exit 1
+ else
+ echo "Artifact URL: $ARTIFACT_URL"
+ fi
+
+ echo "artifact_url=$ARTIFACT_URL" >> $GITHUB_OUTPUT
+ echo "artifact_url=$ARTIFACT_URL"
+
+ - name: Download artifact
+ if: steps.get_artifact_url.outputs.artifact_url != 'null'
+ env:
+ ARTIFACT_URL: ${{ steps.get_artifact_url.outputs.artifact_url }}
+ GITHUB_TOKEN: ${{ inputs.GITHUB_TOKEN }}
+ shell: bash
+ run: |
+ curl -L -H "Authorization: Bearer $GITHUB_TOKEN" \
+ "$ARTIFACT_URL" \
+ -o artifact.zip
+ unzip artifact.zip -d old
+ cd old
+ unzip analyse.zip
+
- name: Analyze all packages
env:
NODE_ENV: ${{ inputs.NODE_ENV }}
@@ -77,18 +121,79 @@ runs:
GROWTHBOOK_DECRYPTION_KEY: ${{ inputs.GROWTHBOOK_DECRYPTION_KEY }}
REF_NAME: ${{ inputs.REF_NAME }}
REMOTE_CONFIG_URL: ${{ inputs.REMOTE_CONFIG_URL }}
+ TRUSTPILOT_API_KEY: ${{ inputs.TRUSTPILOT_API_KEY }}
NODE_OPTIONS: "--max_old_space_size=4096"
- run: npm run build:prod && npm run analyze:stats
shell: bash
+ run: npm run build:prod && npm run analyze:stats && npm run analyze:build
+
+ - name: Compare report to master
+ id: diff
+ if: steps.get_artifact_url.outputs.artifact_url != 'null'
+ shell: bash
+ run: |
+ DIFF_OUTPUT_HTML=$(node .github/actions/analyze/compareReports.js --format=html)
+ ABOVE_THRESHOLD=$(node .github/actions/analyze/compareReports.js --format=boolean) || { echo "Threshold check failed"; exit 1; }
+
+ # Output results to GITHUB_OUTPUT
+ echo "diff_output_html=$DIFF_OUTPUT_HTML" >> $GITHUB_OUTPUT
+ echo "above_threshold=$ABOVE_THRESHOLD" >> $GITHUB_OUTPUT
+
+ - name: Comment on PR with Diff Output
+ if: steps.get_artifact_url.outputs.artifact_url != 'null' && inputs.ISSUE_NUMBER
+ uses: actions/github-script@v5
+ env:
+ DIFF_OUTPUT_HTML: ${{ steps.diff.outputs.diff_output_html }}
+ ISSUE_NUMBER: ${{ inputs.ISSUE_NUMBER }}
+ with:
+ script: |
+ const diffOutputHtml = process.env.DIFF_OUTPUT_HTML; // Removed Buffer.from and base64 decoding
+ const issueNumber = process.env.ISSUE_NUMBER;
+ github.rest.issues.createComment({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ issue_number: issueNumber,
+ body: `${diffOutputHtml}`
+ });
+ continue-on-error: true
+
+ - name: Print out differences on console
+ id: print_diff
+ if: steps.get_artifact_url.outputs.artifact_url != 'null'
+ shell: bash
+ run: |
+ node .github/actions/analyze/compareReports.js --format=console
- - name: Zip all stats.json files
+ - name: Validate size changes
+ if: ${{ steps.diff.outputs.above_threshold == 'true' }}
+ uses: actions/github-script@v5
+ with:
+ script: |
+ core.setFailed('Size changes exceed the defined threshold. Check above logs for details.');
+
+ - name: Zip all report.json files
+ shell: bash
run: |
- zip -r stats.zip packages/*/stats.json
+ zip -r analyse.zip packages/*/report.json
+
+ - name: Upload analyse.zip for Master Branch
+ if: github.ref == 'refs/heads/master'
+ uses: actions/upload-artifact@v4
+ with:
+ name: analyse
+ path: analyse.zip
+ retention-days: 20
+
+ - name: Set sanitized branch name
+ id: sanitize
shell: bash
+ run: |
+ SANITIZED_REF_NAME=$(echo "${{ github.ref_name }}" | sed 's/[^a-zA-Z0-9]/-/g')
+ echo "SANITIZED_REF_NAME=${SANITIZED_REF_NAME}" >> $GITHUB_ENV
- - name: Upload stats.zip
+ - name: Upload analyse.zip for Feature Branches
+ if: github.ref != 'refs/heads/master'
uses: actions/upload-artifact@v4
with:
- name: stats-${{ github.sha }}
- path: stats.zip
- retention-days: 1
+ name: analyse-${{ env.SANITIZED_REF_NAME }}
+ path: analyse.zip
+ retention-days: 5
\ No newline at end of file
diff --git a/.github/actions/analyze/compareReports.js b/.github/actions/analyze/compareReports.js
new file mode 100644
index 000000000000..f84087521b04
--- /dev/null
+++ b/.github/actions/analyze/compareReports.js
@@ -0,0 +1,170 @@
+const fs = require('fs');
+const path = require('path');
+
+// read and use parameters from command line
+const args = process.argv.slice(2); // Skip the first two elements
+let format = args.find(arg => arg.startsWith('--format='))?.split('=')[1] || 'html';
+let orangeThreshold = +(args.find(arg => arg.startsWith('--orangeThreshold='))?.split('=')[1] || 0.5);
+let redThreshold = +(args.find(arg => arg.startsWith('--redThreshold='))?.split('=')[1] || 5);
+
+// main function execution
+main();
+
+function main() {
+ // format: [package]: { oldSize, newSize, diff, percentage }
+ const sizes = analyse();
+
+ // format to different output based on the format parameter
+ // nice table in html if its for comment, nice table in console if its for console, or just true/false if its just to check validity
+ if (format === 'html') {
+ let formattedOutput = formatToTable(sizes);
+ console.log(formattedOutput);
+ } else if (format === 'console') {
+ let formattedOutput = formatToConsole(sizes);
+ console.table(formattedOutput, ['oldSize', 'newSize', 'diff', 'percentage', 'alert']);
+ } else if (format === 'boolean') {
+ const aboveRedThreshold = Object.values(sizes).some(pkg => pkg.percentage > redThreshold);
+ if (aboveRedThreshold) {
+ console.log('true');
+ } else {
+ console.log('false');
+ }
+ }
+}
+
+function analyse() {
+ const packagesDir = './packages';
+ const oldPackagesDir = './old/packages';
+
+ const packages = [...new Set([...fs.readdirSync(packagesDir), ...fs.readdirSync(oldPackagesDir)])];
+
+ const result = {};
+
+ for (const pkg of packages) {
+ const oldReport = readJsonFile(path.join(oldPackagesDir, pkg, 'report.json'));
+ const newReport = readJsonFile(path.join(packagesDir, pkg, 'report.json'));
+
+ if (!newReport) {
+ continue;
+ }
+
+ const oldSize = oldReport ? oldReport.reduce((acc, item) => acc + item.gzipSize, 0) : null;
+ const newSize = newReport ? newReport.reduce((acc, item) => acc + item.gzipSize, 0) : null;
+
+ let diff = oldSize && newSize ? newSize - oldSize : oldSize || newSize;
+ let percentage = oldSize && newSize ? calculatePercentage(oldSize, newSize) : null;
+
+ result[pkg] = {
+ oldSize,
+ newSize,
+ diff,
+ percentage,
+ };
+ }
+
+ return result;
+}
+
+function formatToTable(sizes) {
+ const GREEN_SIGN = '🟢';
+ const YELLOW_SIGN = '🟡';
+ const RED_SIGN = '🔴';
+
+ let tableRows = '';
+ for (const [pkg, { oldSize, newSize, diff, percentage }] of Object.entries(sizes)) {
+ const formattedPercentage = formatPercentageWithSign(percentage);
+ const lightSign =
+ percentage > redThreshold ? RED_SIGN : percentage > orangeThreshold ? YELLOW_SIGN : GREEN_SIGN;
+
+ tableRows += `
+
+ ${pkg} |
+ ${formatBytes(oldSize)} |
+ ${formatBytes(newSize)} |
+ ${formatBytes(diff, true)} |
+ ${formattedPercentage} ${lightSign} |
+
+ `.trim();
+ }
+
+ return `
+
+
+ package |
+ old |
+ new |
+ diff |
+ pct change |
+
+
+ ${tableRows}
+
+
`
+ .replace(/[\n\t]/g, '')
+ .trim();
+}
+
+function formatToConsole(sizes) {
+ Object.keys(sizes).forEach(key => {
+ const pkg = sizes[key];
+ pkg.oldSize = formatBytes(pkg.oldSize);
+ pkg.newSize = formatBytes(pkg.newSize);
+ pkg.diff = formatBytes(pkg.diff, true);
+ pkg.alert = pkg.percentage > redThreshold ? 'FAIL' : pkg.percentage > orangeThreshold ? 'WARN' : 'OK';
+ pkg.percentage = formatPercentageWithSign(pkg.percentage);
+ });
+ return sizes;
+}
+
+function readJsonFile(filePath) {
+ if (fs.existsSync(filePath)) {
+ const data = fs.readFileSync(filePath, 'utf-8');
+ return JSON.parse(data);
+ }
+ return null;
+}
+
+function calculatePercentage(oldSize, newSize) {
+ return ((newSize - oldSize) / oldSize) * 100;
+}
+
+function formatBytes(bytes, sign = false) {
+ if (bytes === null || isNaN(bytes)) {
+ return 'n/a';
+ }
+
+ let formattedValue = '';
+
+ if (bytes < 1024) {
+ formattedValue = bytes + ' B'; // Bytes
+ } else if (bytes < 1048576) {
+ formattedValue = Math.round(bytes / 1024) + ' KB'; // Kilobytes
+ } else {
+ formattedValue = (bytes / 1048576).toFixed(1) + ' MB'; // Megabytes
+ }
+
+ if (sign) {
+ if (bytes === 0) {
+ return '0 B';
+ }
+ formattedValue = bytes >= 0 ? '+' + formattedValue : '-' + formattedValue;
+ }
+
+ return formattedValue;
+}
+
+function formatPercentageWithSign(percentage) {
+ if (percentage === null || isNaN(percentage)) {
+ return 'n/a';
+ }
+
+ const absPercentage = Math.abs(percentage);
+ const decimalPoints = absPercentage < 10 ? 1 : 2;
+ let formattedValue = percentage.toFixed(decimalPoints) + '%';
+
+ if (percentage === 0) {
+ return '0%';
+ }
+
+ return percentage >= 0 ? '+' + formattedValue : '−' + formattedValue;
+}
diff --git a/.github/actions/build/action.yml b/.github/actions/build/action.yml
index 1b570a5301da..fa3538b32bfd 100644
--- a/.github/actions/build/action.yml
+++ b/.github/actions/build/action.yml
@@ -54,6 +54,9 @@ inputs:
IS_GROWTHBOOK_ENABLED:
description: 'Is growthbook enabled'
required: true
+ TRUSTPILOT_API_KEY:
+ description: 'Trustpilot api key'
+ required: false
runs:
using: composite
@@ -77,5 +80,6 @@ runs:
GROWTHBOOK_DECRYPTION_KEY: ${{ inputs.GROWTHBOOK_DECRYPTION_KEY }}
REF_NAME: ${{ inputs.REF_NAME }}
REMOTE_CONFIG_URL: ${{ inputs.REMOTE_CONFIG_URL }}
+ TRUSTPILOT_API_KEY: ${{ inputs.TRUSTPILOT_API_KEY }}
run: npm run build:all
shell: bash
diff --git a/.github/workflows/analyze.yml b/.github/workflows/analyze.yml
index f6d6da369b75..0e88fee58091 100644
--- a/.github/workflows/analyze.yml
+++ b/.github/workflows/analyze.yml
@@ -7,11 +7,16 @@ on:
branches:
- master
+
jobs:
build_and_test:
name: Analyze Bundle
runs-on: Runner_16cores_Deriv-app
environment: Preview
+ permissions:
+ contents: read
+ pull-requests: write
+ actions: read
steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
@@ -31,6 +36,7 @@ jobs:
DATADOG_SESSION_REPLAY_SAMPLE_RATE: ${{ vars.DATADOG_SESSION_REPLAY_SAMPLE_RATE }}
DATADOG_SESSION_SAMPLE_RATE: ${{ vars.DATADOG_SESSION_SAMPLE_RATE }}
DATADOG_SESSION_SAMPLE_RATE_LOGS: ${{ vars.DATADOG_SESSION_SAMPLE_RATE_LOGS }}
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GD_API_KEY: ${{ secrets.GD_API_KEY }}
GD_APP_ID: ${{ secrets.GD_APP_ID }}
GD_CLIENT_ID: ${{ secrets.GD_CLIENT_ID }}
@@ -39,3 +45,5 @@ jobs:
GROWTHBOOK_DECRYPTION_KEY: ${{ vars.GROWTHBOOK_DECRYPTION_KEY }}
REF_NAME: ${{ github.ref_name }}
REMOTE_CONFIG_URL: ${{ vars.REMOTE_CONFIG_URL }}
+ ISSUE_NUMBER: ${{ github.event.pull_request.number }}
+ TRUSTPILOT_API_KEY: ${{ secrets.TRUSTPILOT_API_KEY }}
diff --git a/.github/workflows/release_production.yml b/.github/workflows/release_production.yml
index 65f2a25410c5..becaf68f3502 100644
--- a/.github/workflows/release_production.yml
+++ b/.github/workflows/release_production.yml
@@ -42,6 +42,7 @@ jobs:
GROWTHBOOK_DECRYPTION_KEY: ${{ vars.GROWTHBOOK_DECRYPTION_KEY }}
REF_NAME: ${{ github.ref_name }}
REMOTE_CONFIG_URL: ${{ vars.REMOTE_CONFIG_URL }}
+ TRUSTPILOT_API_KEY: ${{ secrets.TRUSTPILOT_API_KEY }}
- name: Run tests
run: npm test
- name: Versioning
diff --git a/.github/workflows/release_staging.yml b/.github/workflows/release_staging.yml
index 7a9b91273736..d179d8b4d3b8 100644
--- a/.github/workflows/release_staging.yml
+++ b/.github/workflows/release_staging.yml
@@ -40,6 +40,7 @@ jobs:
GROWTHBOOK_DECRYPTION_KEY: ${{ vars.GROWTHBOOK_DECRYPTION_KEY }}
REF_NAME: ${{ github.ref_name }}
REMOTE_CONFIG_URL: ${{ vars.REMOTE_CONFIG_URL }}
+ TRUSTPILOT_API_KEY: ${{ secrets.TRUSTPILOT_API_KEY }}
- name: Run tests
run: npm test
- name: Versioning
diff --git a/.github/workflows/release_test.yml b/.github/workflows/release_test.yml
index a554914d34ee..3105ba94dfe5 100644
--- a/.github/workflows/release_test.yml
+++ b/.github/workflows/release_test.yml
@@ -36,6 +36,7 @@ jobs:
GROWTHBOOK_DECRYPTION_KEY: ${{ vars.GROWTHBOOK_DECRYPTION_KEY }}
REF_NAME: ${{ github.ref_name }}
REMOTE_CONFIG_URL: ${{ vars.REMOTE_CONFIG_URL }}
+ TRUSTPILOT_API_KEY: ${{ secrets.TRUSTPILOT_API_KEY }}
- name: Run tests
run: npm test
- name: Publish to Cloudflare Pages Test
diff --git a/.github/workflows/release_uat.yml b/.github/workflows/release_uat.yml
index 576692230cd4..87b9b6685092 100644
--- a/.github/workflows/release_uat.yml
+++ b/.github/workflows/release_uat.yml
@@ -41,6 +41,7 @@ jobs:
GROWTHBOOK_DECRYPTION_KEY: ${{ vars.GROWTHBOOK_DECRYPTION_KEY }}
REF_NAME: ${{ github.ref_name }}
REMOTE_CONFIG_URL: ${{ vars.REMOTE_CONFIG_URL }}
+ TRUSTPILOT_API_KEY: ${{ secrets.TRUSTPILOT_API_KEY }}
- name: Versioning
uses: "./.github/actions/versioning"
with:
diff --git a/.github/workflows/smoketests.yml b/.github/workflows/smoketests.yml
index b734e82ac895..e1c94bbfdd84 100644
--- a/.github/workflows/smoketests.yml
+++ b/.github/workflows/smoketests.yml
@@ -34,13 +34,14 @@ jobs:
- name: Cypress run
# Uses the official Cypress GitHub action https://github.com/cypress-io/github-action
+ if: ${{ github.event.issue.draft == false && contains(github.event.issue.labels.*.name, 'Wallets') }}
uses: cypress-io/github-action@97d526c9027e1b1eedde4f37196aebe8834005ef
with:
# Records to Cypress Cloud
# https://docs.cypress.io/guides/cloud/projects#Set-up-a-project-to-record
record: true
parallel: true # Runs test in parallel using settings above
- spec: cypress/e2e/api/oAuthLogin.cy.js
+ spec: cypress/e2e/smoke/Wallets/*.cy.js
group: 'Smoke Tests'
env:
@@ -50,9 +51,10 @@ jobs:
# Creating a token https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Set Base Url from client_payload.
- CYPRESS_BASE_URL: ${{ steps.vercel_preview_url.outputs.vercel_preview_url }}
+ CYPRESS_BASE_URL: https://staging-app.deriv.com/
# Send PR details to Cypress test run
- COMMIT_INFO_MESSAGE: PR "${{ github.event.issue.number }}" Changed By "${{ github.event.issue.user.login }}" in Labels "${{ github.event.issue.lables.name }}" (draft? "${{ github.event.issue.draft }} )"
+ COMMIT_INFO_MESSAGE: PR "${{ github.event.issue.number }}" Changed By "${{ github.event.issue.user.login }}" in Labels "${join(github.event.issue.labels.*.name, ', ')}" (draft? "${{ github.event.issue.draft }}")
+
# Set login env variables
E2E_OAUTH_URL: ${{ secrets.E2E_OAUTH_URL }}
E2E_CONFIG_APPID: ${{ secrets.E2E_CONFIG_APPID }}
@@ -60,10 +62,59 @@ jobs:
E2E_MT5_LOGIN: ${{ secrets.E2E_MT5_LOGIN }}
E2E_MT5_PASSWORD: ${{ secrets.E2E_MT5_PASSWORD }}
E2E_MT5_BASEURL: ${{ secrets.E2E_MT5_BASEURL }}
+ E2E_STD_CONFIG_SERVER: ${{ env.QA_SERVER || secrets.E2E_STD_CONFIG_SERVER }}
+ E2E_STD_CONFIG_APPID: ${{ github.event.inputs.appid || secrets.E2E_STD_CONFIG_APPID }}
+ E2E_DOUGHFLOW_CONFIG_SERVER: ${{ secrets.E2E_DOUGHFLOW_CONFIG_SERVER }}
+ E2E_DOUGHFLOW_CONFIG_APPID: ${{ secrets.E2E_DOUGHFLOW_CONFIG_APPID }}
+ E2E_QABOX_URL: ${{ secrets.E2E_QABOX_URL }}
+ E2E_MAIN_QABOX_URL: ${{ secrets.E2E_MAIN_QABOX_URL }}
+ E2E_QABOX_LOGIN: ${{ secrets.E2E_QABOX_LOGIN }}
+ E2E_QABOX_PASSWORD: ${{ secrets.E2E_QABOX_PASSWORD }}
+ TEST_SUITE: ${{ github.event.inputs.suite }}
+ E2E_DERIV_LOGIN_PROD: ${{secrets.E2E_DERIV_LOGIN_PROD}}
+ E2E_DERIV_PASSWORD_PROD: ${{secrets.E2E_DERIV_PASSWORD_PROD }}
+ E2E_PROD_SERVER: ${{secrets.E2E_PROD_SERVER}}
+ E2E_PROD_APPID: ${{secrets.E2E_PROD_APPID}}
+ E2E_LOGIN_ID_P2P_FIXEDRATE: ${{ secrets.E2E_LOGIN_ID_P2P_FIXEDRATE }}
+ E2E_P2P_FLOATING: ${{secrets.E2E_P2P_FLOATING}}
+ E2E_LOGIN_ID_P2P_STANDARDACCOUNTWITHADS: ${{secrets.E2E_LOGIN_ID_P2P_STANDARDACCOUNTWITHADS}}
+ E2E_LOGIN_ID_P2P_STANDARDACCOUNTWITHOUTADS: ${{secrets.E2E_LOGIN_ID_P2P_STANDARDACCOUNTWITHOUTADS}}
+ E2E_LOGIN_ID_P2P_FLOATINGRATE_SELLAD_1: ${{secrets.E2E_LOGIN_ID_P2P_FLOATINGRATE_SELLAD_1}}
+ E2E_LOGIN_ID_P2P_FLOATINGRATE_SELLAD_2: ${{secrets.E2E_LOGIN_ID_P2P_FLOATINGRATE_SELLAD_2}}
+ E2E_LOGIN_ID_P2P_EMPTYSTATE: ${{secrets.E2E_LOGIN_ID_P2P_EMPTYSTATE}}
+ E2E_LOGIN_ID_P2P_SORT: ${{secrets.E2E_LOGIN_ID_P2P_SORT}}
+ E2E_CRYPTO: ${{secrets.E2E_CRYPTO}}
+ E2E_STG_APPID: ${{secrets.E2E_STG_APPID}}
+ E2E_PSWD_P2P: ${{secrets.E2E_PSWD_P2P}}
+ E2E_CASHIER_WITHDRAWAL_PROD: ${{secrets.E2E_CASHIER_WITHDRAWAL_PROD}}
+ E2E_CASHIER_PROD_PASSWORD: ${{secrets.E2E_CASHIER_PROD_PASSWORD}}
+ E2E_LOGIN_ID_DBOT: ${{secrets.E2E_LOGIN_ID_DBOT}}
+ E2E_LOGIN_ID_PROD_DBOT: ${{secrets.E2E_LOGIN_ID_PROD_DBOT}}
+ E2E_QA_ACCOUNT_PASSWORD: ${{secrets.E2E_QA_ACCOUNT_PASSWORD}}
+ E2E_LOGIN_ID_CASHIER_LEGACY: ${{secrets.E2E_LOGIN_ID_CASHIER_LEGACY}}
+ E2E_LOGIN_ID_CASHIER_LEGACY_NON_USD: ${{secrets.E2E_LOGIN_ID_CASHIER_LEGACY_NON_USD}}
+ E2E_MAILISK_NAMESPACE: ${{secrets.E2E_MAILISK_NAMESPACE}}
+ E2E_MAILISK_API_KEY: ${{secrets.E2E_MAILISK_API_KEY}}
+ E2E_DIEL_LOGIN: ${{secrets.E2E_DIEL_LOGIN}}
+ E2E_EU_LOGIN: ${{secrets.E2E_EU_LOGIN}}
+ E2E_APP_REGISTER_URL: ${{ steps.vercel_preview_url.outputs.vercel_preview_url }}
+ E2E_RUN_FROM_PR: ${{secrets.E2E_RUN_FROM_PR}}
+ E2E_DERIV_LOGIN_WALLET_MOBILE : ${{ secrets.E2E_DERIV_LOGIN_WALLET_MOBILE }}
+ E2E_WALLET_MIGRATION_NEWCLIENT : ${{ secrets.E2E_WALLET_MIGRATION_NEWCLIENT }}
+ E2E_WALLET_MIGRATION_NO_VRTC : ${{ secrets.E2E_WALLET_MIGRATION_NO_VRTC }}
+ E2E_WALLET_MIGRATION_VRTCONLY : ${{ secrets.E2E_WALLET_MIGRATION_VRTCONLY }}
+ E2E_WALLET_MIGRATION_NO_CURRENCY : ${{ secrets.E2E_WALLET_MIGRATION_NO_CURRENCY }}
+ E2E_WALLET_MIGRATION_NON_USD : ${{ secrets.E2E_WALLET_MIGRATION_NON_USD }}
+ E2E_WALLET_MIGRATION_P2P : ${{ secrets.E2E_WALLET_MIGRATION_P2P }}
+ E2E_WALLET_MIGRATION_PA : ${{ secrets.E2E_WALLET_MIGRATION_PA }}
+ E2E_WALLET_MIGRATION_PA_CLIENT : ${{ secrets.E2E_WALLET_MIGRATION_PA_CLIENT }}
+ E2E_DERIV_LOGIN_WALLET: ${{ secrets.E2E_DERIV_LOGIN_WALLET }}
+ E2E_WALLETS_LOGIN_PROD: ${{ secrets.E2E_WALLETS_LOGIN_PROD }}
+ E2E_WALLETS_PASSWORD_PROD: ${{ secrets.E2E_WALLETS_PASSWORD_PROD }}
- name: Set comments message
id: set_msg
- if: always()
+ if: always() && ${{ github.event.issue.draft == false && contains(github.event.issue.labels.*.name, 'Wallets') }}
run: |
# Using shell script to conditionally set the message
if [[ "${{ job.status }}" == "success" ]]; then
@@ -73,7 +124,7 @@ jobs:
fi
- name: Leave comment
- if: always()
+ if: always() && ${{ github.event.issue.draft == false && contains(github.event.issue.labels.*.name, 'Wallets') }}
uses: marocchino/sticky-pull-request-comment@331f8f5b4215f0445d3c07b4967662a32a2d3e31
with:
header: Smoke tests status update
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 3fddd2b24ce5..1d9c48806b34 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -37,22 +37,16 @@ jobs:
run: npx tsc --project packages/wallets/tsconfig.json -noEmit
- name: Check TypeScript for @deriv/tradershub
run: npx tsc --project packages/tradershub/tsconfig.json -noEmit
- - name: Check TypeScript for @deriv/account-v2
- run: npx tsc --project packages/account-v2/tsconfig.json -noEmit
- name: Check TypeScript for @deriv/cashier-v2
run: npx tsc --project packages/cashier-v2/tsconfig.json -noEmit
- name: Check ESLint for @deriv/wallets
run: npx eslint --fix --ignore-path packages/wallets/.eslintignore --config packages/wallets/.eslintrc.js packages/wallets
- name: Check ESLint for @deriv/tradershub
run: npx eslint --fix --ignore-path packages/tradershub/.eslintignore --config packages/tradershub/.eslintrc.js packages/tradershub
- - name: Check ESLint for @deriv/account-v2
- run: npx eslint --fix --ignore-path packages/account-v2/.eslintignore --config packages/account-v2/.eslintrc.js packages/account-v2
- name: Check ESLint for @deriv/cashier-v2
run: npx eslint --fix --ignore-path packages/cashier-v2/.eslintignore --config packages/cashier-v2/.eslintrc.js packages/cashier-v2
- name: Check Stylelint for @deriv/wallets
run: npx stylelint packages/wallets/**/*.scss
- - name: Check Stylelint for @deriv/account-v2
- run: npx stylelint packages/account-v2/**/*.scss
- name: Check Stylelint for @deriv/cashier-v2
run: npx stylelint packages/cashier-v2/**/*.scss
- name: Check tests for @deriv/hooks
diff --git a/analyze.html b/analyze.html
index ed275f5f9c0b..078e248e7796 100644
--- a/analyze.html
+++ b/analyze.html
@@ -57,9 +57,6 @@