Skip to content

Commit 992359a

Browse files
author
DavertMik
committed
fixed docker build
1 parent d812402 commit 992359a

File tree

4 files changed

+28
-53
lines changed

4 files changed

+28
-53
lines changed

docker/run.sh

Lines changed: 20 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -24,56 +24,38 @@ EOF
2424
fi
2525
}
2626

27-
# Setup node_modules with ESM-compatible codeceptjs
28-
setup_node_modules() {
29-
local dir="$1"
30-
local node_modules="$dir/node_modules"
31-
local codecept_module="$node_modules/codeceptjs"
32-
33-
mkdir -p "$codecept_module"
34-
35-
cat > "$codecept_module/package.json" << 'EOF'
36-
{
37-
"name": "codeceptjs",
38-
"type": "module",
39-
"exports": {
40-
".": "./index.js",
41-
"./effects": "./effects.js"
42-
},
43-
"main": "./index.js"
44-
}
45-
EOF
46-
47-
ln -sf /codecept/lib/index.js "$codecept_module/index.js"
48-
ln -sf /codecept/lib/effects.js "$codecept_module/effects.js"
27+
# Ensure /tests/node_modules links to /codecept/node_modules
28+
if [ -L "/tests/node_modules" ]; then
29+
# Already a symlink, good
30+
:
31+
elif [ -d "/tests/node_modules" ]; then
32+
# Directory exists, remove it and create symlink
33+
rm -rf /tests/node_modules
34+
ln -sf /codecept/node_modules /tests/node_modules
35+
else
36+
# Doesn't exist, create symlink
37+
ln -sf /codecept/node_modules /tests/node_modules
38+
fi
4939

50-
for dep_dir in /codecept/node_modules/*; do
51-
dep_name=$(basename "$dep_dir")
52-
if [ "$dep_name" != "codeceptjs" ] && [ ! -e "$node_modules/$dep_name" ]; then
53-
ln -sf "$dep_dir" "$node_modules/$dep_name" 2>/dev/null || true
54-
fi
55-
done
56-
}
40+
# Ensure /codecept/node_modules/codeceptjs is a symlink to /codecept
41+
# This allows require('codeceptjs') from CJS modules to work
42+
if [ -d "/codecept/node_modules/codeceptjs" ] && [ ! -L "/codecept/node_modules/codeceptjs" ]; then
43+
rm -rf /codecept/node_modules/codeceptjs
44+
ln -sf /codecept /codecept/node_modules/codeceptjs
45+
elif [ ! -e "/codecept/node_modules/codeceptjs" ]; then
46+
ln -sf /codecept /codecept/node_modules/codeceptjs
47+
fi
5748

5849
# Find codecept config in current directory
5950
config_file=$(find . -maxdepth 2 -name "codecept.conf.*" -type f | head -1)
6051

6152
if [ -n "$config_file" ]; then
6253
config_dir=$(dirname "$config_file")
6354
ensure_esm_package "$config_dir"
64-
setup_node_modules "$config_dir"
6555
else
6656
ensure_esm_package "$(pwd)"
67-
setup_node_modules "$(pwd)"
6857
fi
6958

70-
# Also setup node_modules in any subdirectories that might contain test files
71-
for test_dir in acceptance test tests; do
72-
if [ -d "$test_dir" ]; then
73-
setup_node_modules "$test_dir"
74-
fi
75-
done
76-
7759
# Run the tests
7860
cd /tests/ || exit
7961
if [ "$RUN_MULTIPLE" = true ]; then

lib/container.js

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -377,23 +377,12 @@ async function requireHelperFromModule(helperName, config, HelperClass) {
377377
try {
378378
// Try dynamic import for both CommonJS and ESM modules
379379
const mod = await import(moduleName)
380-
if (!mod && !mod.default) {
381-
throw new Error(`Helper module '${moduleName}' was not found. Make sure you have installed the package correctly.`)
380+
if (!mod || (!mod.default && !Object.keys(mod).length)) {
381+
throw new Error(`Helper module '${moduleName}' was imported but has no exports.`)
382382
}
383383
HelperClass = mod.default || mod
384384
} catch (err) {
385-
if (err.code === 'ERR_REQUIRE_ESM' || (err.message && err.message.includes('ES module'))) {
386-
// This is an ESM module, use dynamic import
387-
try {
388-
const pathModule = await import('path')
389-
const absolutePath = pathModule.default.resolve(moduleName)
390-
const mod = await import(absolutePath)
391-
HelperClass = mod.default || mod
392-
debug(`helper ${helperName} loaded via ESM import`)
393-
} catch (importErr) {
394-
throw new Error(`Helper module '${moduleName}' could not be imported as ESM: ${importErr.message}`)
395-
}
396-
} else if (err.code === 'MODULE_NOT_FOUND') {
385+
if (err.code === 'ERR_MODULE_NOT_FOUND') {
397386
throw new Error(`Helper module '${moduleName}' was not found. Make sure you have installed the package correctly.`)
398387
} else {
399388
throw err

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@
3434
"./lib/*": "./lib/*.js",
3535
"./els": "./lib/els.js",
3636
"./effects": "./lib/effects.js",
37-
"./steps": "./lib/steps.js"
37+
"./steps": "./lib/steps.js",
38+
"./store": "./lib/store.js"
3839
},
3940
"types": "typings/index.d.ts",
4041
"bin": {

test/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"type": "module"
3+
}

0 commit comments

Comments
 (0)