@@ -9,6 +9,18 @@ import fetch from 'node-fetch'
99import { log } from '../../src/utils'
1010import { killProcessAtPort , waitForChainReady } from '../utils/test-helpers'
1111
12+ /**
13+ * Check if nodeos is available in PATH
14+ */
15+ function isNodeosAvailable ( ) : boolean {
16+ try {
17+ execSync ( 'which nodeos' , { encoding : 'utf8' , stdio : 'pipe' } )
18+ return true
19+ } catch {
20+ return false
21+ }
22+ }
23+
1224/**
1325 * E2E tests for the complete workflow:
1426 * 1. Create wallet keys
@@ -46,6 +58,14 @@ suite('E2E Workflow', () => {
4658 suiteSetup ( async function ( ) {
4759 this . timeout ( 180000 ) // Increase timeout for potential LEAP installation + chain startup
4860
61+ // Skip E2E tests if nodeos is not available (e.g., in CI without LEAP installed)
62+ if ( ! isNodeosAvailable ( ) ) {
63+ // eslint-disable-next-line no-console
64+ console . log ( 'Skipping E2E tests: nodeos is not available in PATH' )
65+ this . skip ( )
66+ return
67+ }
68+
4969 // Create a temporary test directory
5070 testDir = path . join ( os . tmpdir ( ) , `wharfkit-e2e-test-${ Date . now ( ) } ` )
5171 fs . mkdirSync ( testDir , { recursive : true } )
@@ -79,6 +99,12 @@ suite('E2E Workflow', () => {
7999
80100 suiteTeardown ( function ( ) {
81101 this . timeout ( 30000 )
102+
103+ // If suite was skipped (nodeos not available), nothing to clean up
104+ if ( ! testDir ) {
105+ return
106+ }
107+
82108 // Restore original HOME
83109 process . env . HOME = originalHome
84110
@@ -87,7 +113,11 @@ suite('E2E Workflow', () => {
87113 fs . rmSync ( testDir , { recursive : true , force : true } )
88114 }
89115
90- execSync ( `node ${ cliPath } chain local stop` , { encoding : 'utf8' } )
116+ try {
117+ execSync ( `node ${ cliPath } chain local stop` , { encoding : 'utf8' } )
118+ } catch {
119+ // Ignore errors if chain wasn't started
120+ }
91121 } )
92122
93123 suite ( 'Wallet Key Management' , ( ) => {
0 commit comments