@@ -31,133 +31,149 @@ echo "Running integration tests on Node $NODE_VERSION"
31
31
# make a backup of our config file so we can restore it when we're done
32
32
mv next.config.js next.config.js.bak
33
33
34
- for NEXTJS_VERSION in 10 11 12 13; do
35
-
36
- # export this to the env so that we can behave differently depending on which version of next we're testing, without
37
- # having to pass this value from function to function to function to the one spot, deep in some callstack, where we
38
- # actually need it
39
- export NEXTJS_VERSION=$NEXTJS_VERSION
40
- export NODE_MAJOR=$NODE_MAJOR
41
-
42
- # Next 10 requires at least Node v10
43
- if [ " $NODE_MAJOR " -lt " 10" ]; then
44
- echo " [nextjs] Next.js is not compatible with versions of Node older than v10. Current version $NODE_VERSION "
45
- exit 0
46
- fi
47
-
48
- # Next.js v11 requires at least Node v12
49
- if [ " $NODE_MAJOR " -lt " 12" ] && [ " $NEXTJS_VERSION " -ge " 11" ]; then
50
- echo " [nextjs@$NEXTJS_VERSION ] Not compatible with Node $NODE_MAJOR "
51
- exit 0
52
- fi
53
-
54
- # Next.js v13 requires at least Node v14
55
- if [ " $NODE_MAJOR " -lt " 14" ] && [ " $NEXTJS_VERSION " -ge " 13" ]; then
56
- echo " [nextjs@$NEXTJS_VERSION ] Not compatible with Node $NODE_MAJOR "
57
- exit 0
58
- fi
59
-
60
- echo " [nextjs@$NEXTJS_VERSION ] Preparing environment..."
61
- rm -rf node_modules .next .env.local 2> /dev/null || true
62
-
63
- echo " [nextjs@$NEXTJS_VERSION ] Installing dependencies..."
64
- # set the desired version of next long enough to run yarn, and then restore the old version (doing the restoration now
65
- # rather than during overall cleanup lets us look for "latest" in every loop)
66
- cp package.json package.json.bak
67
- if [[ $( uname) == " Darwin" ]]; then
68
- sed -i " " /" next.*latest" /s/latest/" ${NEXTJS_VERSION} .x" / package.json
69
- else
70
- sed -i /" next.*latest" /s/latest/" ${NEXTJS_VERSION} .x" / package.json
71
- fi
72
-
73
- # Next.js v13 requires React 18.2.0
74
- if [ " $NEXTJS_VERSION " -eq " 13" ]; then
75
-
76
- fi
77
- # We have to use `--ignore-engines` because sucrase claims to need Node 12, even though tests pass just fine on Node
78
- # 10
79
- yarn --no-lockfile --ignore-engines --silent > /dev/null 2>&1
80
- # if applicable, use local versions of `@sentry/cli` and/or `@sentry/webpack-plugin` (these commands no-op unless
81
- # LINKED_CLI_REPO and/or LINKED_PLUGIN_REPO are set)
82
- linkcli && linkplugin
83
- mv -f package.json.bak package.json 2> /dev/null || true
84
-
85
- SHOULD_RUN_WEBPACK_5=(true)
86
- # Only run Webpack 4 tests for Next 10 and Next 11
87
- if [ " $NEXTJS_VERSION " -eq " 10" ] || [ " $NEXTJS_VERSION " -eq " 11" ]; then
88
- SHOULD_RUN_WEBPACK_5+=(false)
89
- fi
90
-
91
- for RUN_WEBPACK_5 in ${SHOULD_RUN_WEBPACK_5[*]} ; do
92
- [ " $RUN_WEBPACK_5 " == true ] &&
93
- WEBPACK_VERSION=5 ||
94
- WEBPACK_VERSION=4
95
-
96
- if [ " $NODE_MAJOR " -gt " 17" ]; then
97
- # Node v17+ does not work with NextJS 10 and 11 because of their legacy openssl use
98
- # Ref: https://github.com/vercel/next.js/issues/30078
99
- if [ " $NEXTJS_VERSION " -lt " 12" ]; then
100
- echo " [nextjs@$NEXTJS_VERSION Node $NODE_MAJOR not compatible with NextJS $NEXTJS_VERSION "
101
- # Continues the 2nd enclosing loop, which is the outer loop that iterates over the NextJS version
102
- continue 2
103
- fi
34
+ # for NEXTJS_VERSION in 10 11 12 13; do
35
+ for NEXTJS_VERSION in 13; do
36
+ for USE_APPDIR in true false ; do
37
+ if ([ " $NEXTJS_VERSION " -lt " 13" ] || [ " $NODE_MAJOR " -lt " 16" ]) && [ " $USE_APPDIR " == true ]; then
38
+ # Next.js < 13 do not support appDir
39
+ continue
40
+ fi
104
41
105
- # Node v18 only with Webpack 5 and above
106
- # https://github.com/webpack/webpack/issues/14532#issuecomment-947513562
107
- # Context: https://github.com/vercel/next.js/issues/30078#issuecomment-947338268
108
- if [ " $WEBPACK_VERSION " -eq " 4" ]; then
109
- echo " [nextjs@$NEXTJS_VERSION | webpack@$WEBPACK_VERSION ] Node $NODE_MAJOR not compatible with Webpack $WEBPACK_VERSION "
110
- # Continues the 1st enclosing loop, which is the inner loop that iterates over the Webpack version
111
- continue
112
- fi
42
+ # export this to the env so that we can behave differently depending on which version of next we're testing, without
43
+ # having to pass this value from function to function to function to the one spot, deep in some callstack, where we
44
+ # actually need it
45
+ export NEXTJS_VERSION=$NEXTJS_VERSION
46
+ export NODE_MAJOR=$NODE_MAJOR
47
+ export USE_APPDIR=$USE_APPDIR
48
+
49
+ # Next 10 requires at least Node v10
50
+ if [ " $NODE_MAJOR " -lt " 10" ]; then
51
+ echo " [nextjs] Next.js is not compatible with versions of Node older than v10. Current version $NODE_VERSION "
52
+ exit 0
53
+ fi
113
54
55
+ # Next.js v11 requires at least Node v12
56
+ if [ " $NODE_MAJOR " -lt " 12" ] && [ " $NEXTJS_VERSION " -ge " 11" ]; then
57
+ echo " [nextjs@$NEXTJS_VERSION ] Not compatible with Node $NODE_MAJOR "
58
+ exit 0
114
59
fi
115
60
116
- # next 10 defaults to webpack 4 and next 11 defaults to webpack 5, but each can use either based on settings
117
- if [ " $NEXTJS_VERSION " -eq " 10" ]; then
118
- sed " s/%RUN_WEBPACK_5%/$RUN_WEBPACK_5 /g" < next10.config.template > next.config.js
119
- elif [ " $NEXTJS_VERSION " -eq " 11" ]; then
120
- sed " s/%RUN_WEBPACK_5%/$RUN_WEBPACK_5 /g" < next11.config.template > next.config.js
121
- elif [ " $NEXTJS_VERSION " -eq " 12" ]; then
122
- sed " s/%RUN_WEBPACK_5%/$RUN_WEBPACK_5 /g" < next12.config.template > next.config.js
123
- elif [ " $NEXTJS_VERSION " -eq " 13" ]; then
124
- sed " s/%RUN_WEBPACK_5%/$RUN_WEBPACK_5 /g" < next13.config.template > next.config.js
61
+ # Next.js v13 requires at least Node v14
62
+ if [ " $NODE_MAJOR " -lt " 14" ] && [ " $NEXTJS_VERSION " -ge " 13" ]; then
63
+ echo " [nextjs@$NEXTJS_VERSION ] Not compatible with Node $NODE_MAJOR "
64
+ exit 0
125
65
fi
126
66
127
- echo " [nextjs@$NEXTJS_VERSION | webpack@ $WEBPACK_VERSION ] Building ..."
128
- yarn build
67
+ echo " [nextjs@$NEXTJS_VERSION ] Preparing environment ..."
68
+ rm -rf node_modules .next .env.local 2> /dev/null || true
129
69
130
- # if the user hasn't passed any args, use the default one, which restricts each test to only outputting success and
131
- # failure messages
132
- args=$*
133
- if [[ ! $args ]]; then
134
- args=" --silent"
70
+ echo " [nextjs@$NEXTJS_VERSION ] Installing dependencies..."
71
+ # set the desired version of next long enough to run yarn, and then restore the old version (doing the restoration now
72
+ # rather than during overall cleanup lets us look for "latest" in every loop)
73
+ cp package.json package.json.bak
74
+ if [[ $( uname) == " Darwin" ]]; then
75
+ sed -i " " /" next.*latest" /s/latest/" ${NEXTJS_VERSION} .x" / package.json
76
+ else
77
+ sed -i /" next.*latest" /s/latest/" ${NEXTJS_VERSION} .x" / package.json
135
78
fi
136
79
137
- # we keep this updated as we run the tests, so that if it's ever non-zero, we can bail
138
- EXIT_CODE=0
80
+ # Next.js v13 requires React 18.2.0
81
+ if [ " $NEXTJS_VERSION " -eq " 13" ]; then
82
+
83
+ fi
84
+ # We have to use `--ignore-engines` because sucrase claims to need Node 12, even though tests pass just fine on Node
85
+ # 10
86
+ yarn --no-lockfile --ignore-engines --silent > /dev/null 2>&1
87
+ # if applicable, use local versions of `@sentry/cli` and/or `@sentry/webpack-plugin` (these commands no-op unless
88
+ # LINKED_CLI_REPO and/or LINKED_PLUGIN_REPO are set)
89
+ linkcli && linkplugin
90
+ mv -f package.json.bak package.json 2> /dev/null || true
91
+
92
+ SHOULD_RUN_WEBPACK_5=(true)
93
+ # Only run Webpack 4 tests for Next 10 and Next 11
94
+ if [ " $NEXTJS_VERSION " -eq " 10" ] || [ " $NEXTJS_VERSION " -eq " 11" ]; then
95
+ SHOULD_RUN_WEBPACK_5+=(false)
96
+ fi
139
97
140
- echo " [nextjs@$NEXTJS_VERSION | webpack@$WEBPACK_VERSION ] Running server tests with options: $args "
141
- (cd .. && yarn test:integration:server) || EXIT_CODE=$?
98
+ for RUN_WEBPACK_5 in ${SHOULD_RUN_WEBPACK_5[*]} ; do
99
+ [ " $RUN_WEBPACK_5 " == true ] &&
100
+ WEBPACK_VERSION=5 ||
101
+ WEBPACK_VERSION=4
102
+
103
+ if [ " $NODE_MAJOR " -gt " 17" ]; then
104
+ # Node v17+ does not work with NextJS 10 and 11 because of their legacy openssl use
105
+ # Ref: https://github.com/vercel/next.js/issues/30078
106
+ if [ " $NEXTJS_VERSION " -lt " 12" ]; then
107
+ echo " [nextjs@$NEXTJS_VERSION Node $NODE_MAJOR not compatible with NextJS $NEXTJS_VERSION "
108
+ # Continues the 2nd enclosing loop, which is the outer loop that iterates over the NextJS version
109
+ continue 2
110
+ fi
111
+
112
+ # Node v18 only with Webpack 5 and above
113
+ # https://github.com/webpack/webpack/issues/14532#issuecomment-947513562
114
+ # Context: https://github.com/vercel/next.js/issues/30078#issuecomment-947338268
115
+ if [ " $WEBPACK_VERSION " -eq " 4" ]; then
116
+ echo " [nextjs@$NEXTJS_VERSION | webpack@$WEBPACK_VERSION ] Node $NODE_MAJOR not compatible with Webpack $WEBPACK_VERSION "
117
+ # Continues the 1st enclosing loop, which is the inner loop that iterates over the Webpack version
118
+ continue
119
+ fi
142
120
143
- if [ $EXIT_CODE -eq 0 ]; then
144
- echo " [nextjs@$NEXTJS_VERSION | webpack@$WEBPACK_VERSION ] Server integration tests passed"
145
- else
146
- echo " [nextjs@$NEXTJS_VERSION | webpack@$WEBPACK_VERSION ] Server integration tests failed"
147
- exit 1
148
- fi
121
+ fi
122
+
123
+ # next 10 defaults to webpack 4 and next 11 defaults to webpack 5, but each can use either based on settings
124
+ if [ " $NEXTJS_VERSION " -eq " 10" ]; then
125
+ sed " s/%RUN_WEBPACK_5%/$RUN_WEBPACK_5 /g" < next10.config.template > next.config.js
126
+ elif [ " $NEXTJS_VERSION " -eq " 11" ]; then
127
+ sed " s/%RUN_WEBPACK_5%/$RUN_WEBPACK_5 /g" < next11.config.template > next.config.js
128
+ elif [ " $NEXTJS_VERSION " -eq " 12" ]; then
129
+ sed " s/%RUN_WEBPACK_5%/$RUN_WEBPACK_5 /g" < next12.config.template > next.config.js
130
+ elif [ " $NEXTJS_VERSION " -eq " 13" ]; then
131
+ if [ " $USE_APPDIR " == true ]; then
132
+ sed " s/%RUN_WEBPACK_5%/$RUN_WEBPACK_5 /g" < next13.appdir.config.template > next.config.js
133
+ else
134
+ sed " s/%RUN_WEBPACK_5%/$RUN_WEBPACK_5 /g" < next13.config.template > next.config.js
135
+ fi
136
+ fi
137
+
138
+ echo " [nextjs@$NEXTJS_VERSION | webpack@$WEBPACK_VERSION ] Building..."
139
+ yarn build
140
+
141
+ # if the user hasn't passed any args, use the default one, which restricts each test to only outputting success and
142
+ # failure messages
143
+ args=$*
144
+ if [[ ! $args ]]; then
145
+ args=" --silent"
146
+ fi
147
+
148
+ # we keep this updated as we run the tests, so that if it's ever non-zero, we can bail
149
+ EXIT_CODE=0
150
+
151
+ if [ " $USE_APPDIR " == true ]; then
152
+ echo " Skipping server tests for appdir"
153
+ else
154
+ echo " [nextjs@$NEXTJS_VERSION | webpack@$WEBPACK_VERSION ] Running server tests with options: $args "
155
+ (cd .. && yarn test:integration:server) || EXIT_CODE=$?
156
+ fi
149
157
150
- if [ " $NODE_MAJOR " -lt " 14" ]; then
151
- echo " [nextjs@$NEXTJS_VERSION | webpack@$WEBPACK_VERSION ] Skipping client tests on Node $NODE_MAJOR "
152
- else
153
- echo " [nextjs@$NEXTJS_VERSION | webpack@$WEBPACK_VERSION ] Running client tests with options: $args "
154
- (cd .. && yarn test:integration:client) || EXIT_CODE=$?
155
158
if [ $EXIT_CODE -eq 0 ]; then
156
- echo " [nextjs@$NEXTJS_VERSION | webpack@$WEBPACK_VERSION ] Client integration tests passed"
159
+ echo " [nextjs@$NEXTJS_VERSION | webpack@$WEBPACK_VERSION ] Server integration tests passed"
157
160
else
158
- echo " [nextjs@$NEXTJS_VERSION | webpack@$WEBPACK_VERSION ] Client integration tests failed"
161
+ echo " [nextjs@$NEXTJS_VERSION | webpack@$WEBPACK_VERSION ] Server integration tests failed"
159
162
exit 1
160
163
fi
161
- fi
164
+
165
+ if [ " $NODE_MAJOR " -lt " 14" ]; then
166
+ echo " [nextjs@$NEXTJS_VERSION | webpack@$WEBPACK_VERSION ] Skipping client tests on Node $NODE_MAJOR "
167
+ else
168
+ echo " [nextjs@$NEXTJS_VERSION | webpack@$WEBPACK_VERSION ] Running client tests with options: $args "
169
+ (cd .. && yarn test:integration:client) || EXIT_CODE=$?
170
+ if [ $EXIT_CODE -eq 0 ]; then
171
+ echo " [nextjs@$NEXTJS_VERSION | webpack@$WEBPACK_VERSION ] Client integration tests passed"
172
+ else
173
+ echo " [nextjs@$NEXTJS_VERSION | webpack@$WEBPACK_VERSION ] Client integration tests failed"
174
+ exit 1
175
+ fi
176
+ fi
177
+ done
162
178
done
163
179
done
0 commit comments