You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by dg...@apache.org on 2020/07/10 17:52:47 UTC

[openwhisk-runtime-nodejs] branch master updated: remove nodejs8Action (#176)

This is an automated email from the ASF dual-hosted git repository.

dgrove pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openwhisk-runtime-nodejs.git


The following commit(s) were added to refs/heads/master by this push:
     new 6896c0d  remove nodejs8Action (#176)
6896c0d is described below

commit 6896c0d95477628fe51306235b29d81c97d6e89a
Author: David Grove <dg...@users.noreply.github.com>
AuthorDate: Fri Jul 10 13:52:27 2020 -0400

    remove nodejs8Action (#176)
    
    NodeJS 8 End-Of-Life was Dec 31, 2019.
---
 .travis.yml                                        |   2 +-
 README.md                                          |  12 +-
 core/nodejs8Action/.dockerignore                   |  13 --
 core/nodejs8Action/CHANGELOG.md                    | 136 ---------------------
 core/nodejs8Action/Dockerfile                      |  43 -------
 core/nodejs8Action/build.gradle                    |  86 -------------
 core/nodejs8Action/knative/Dockerfile              |  37 ------
 settings.gradle                                    |   2 -
 tests/dat/docker/nodejs8docker/Dockerfile          |  19 ---
 tests/dat/docker/nodejs8docker/build.gradle        |  19 ---
 tests/dat/docker/nodejs8docker/package.json        |   8 --
 .../NodeJs10ActionContainerTests.scala             |   2 +-
 .../NodeJs12ActionContainerTests.scala             |   2 +-
 .../NodeJs14ActionContainerTests.scala             |   2 +-
 .../NodeJs8ActionContainerTests.scala              |  95 --------------
 .../actionContainers/NodeJs8ConcurrentTests.scala  |  27 ----
 .../NodeJsActionContainerTests.scala               |  68 +++++++++++
 .../actionContainers/NodeJsConcurrentTests.scala   |   2 -
 18 files changed, 73 insertions(+), 502 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 501bf4c..22c2fca 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -42,7 +42,7 @@ deploy:
       all_branches: true
       repo: apache/openwhisk-runtime-nodejs
   - provider: script
-    script: "./tools/travis/publish.sh openwhisk nodejs8Action nightly && ./tools/travis/publish.sh openwhisk nodejs10Action nightly && ./tools/travis/publish.sh openwhisk nodejs12Action nightly && ./tools/travis/publish.sh openwhisk nodejs14Action nightly && ./tools/travis/publish.sh openwhisk typescript37Action nightly"
+    script: "./tools/travis/publish.sh openwhisk nodejs10Action nightly && ./tools/travis/publish.sh openwhisk nodejs12Action nightly && ./tools/travis/publish.sh openwhisk nodejs14Action nightly && ./tools/travis/publish.sh openwhisk typescript37Action nightly"
     on:
       branch: master
       repo: apache/openwhisk-runtime-nodejs
diff --git a/README.md b/README.md
index 1aaf261..adacfc7 100644
--- a/README.md
+++ b/README.md
@@ -26,7 +26,6 @@ This repository contains sources files needed to build the Node.js runtimes for
 
 The following Node.js runtime versions (with kind & image labels) are generated by the build system:
 
-- Node.js 8.16.1 (`nodejs:8` & `openwhisk/action-nodejs-v8`)
 - Node.js 10.16.3 (`nodejs:10` &  `openwhisk/action-nodejs-v10`)
 - Node.js 12.8.1 (`nodejs:12` & `openwhisk/action-nodejs-v12`)
 - Node.js 14.2.0 (`nodejs:14` & `openwhisk/action-nodejs-v14`)
@@ -39,12 +38,6 @@ This README documents the build, customisation and testing of these runtime imag
 
 If the deployment of Apache OpenWhisk includes these images in the runtime manifest, use the `--kind` parameter to select the Node.js runtime version.
 
-### Node.js v8
-
-```
-wsk action update myAction myAction.js --kind nodejs:8
-```
-
 ### Node.js v10
 
 ```
@@ -67,7 +60,6 @@ wsk action update myAction myAction.js --kind nodejs:14
 
 All the runtime images are published by the project to Docker Hub @ [https://hub.docker.com/u/openwhisk](https://hub.docker.com/u/openwhisk)
 
-- [https://hub.docker.com/r/openwhisk/action-nodejs-v8](https://hub.docker.com/r/openwhisk/action-nodejs-v8)
 - [https://hub.docker.com/r/openwhisk/action-nodejs-v10](https://hub.docker.com/r/openwhisk/action-nodejs-v10)
 - [https://hub.docker.com/r/openwhisk/action-nodejs-v12](https://hub.docker.com/r/openwhisk/action-nodejs-v12)
 - [https://hub.docker.com/r/openwhisk/action-nodejs-v14](https://hub.docker.com/r/openwhisk/action-nodejs-v14)
@@ -97,13 +89,12 @@ The `core/nodejsActionBase` folder contains the Node.js app server used to imple
 - Run the `distDocker` command to generate local Docker images for the different runtime versions.
 
 ```
-./gradlew core:nodejs8Action:distDocker
 ./gradlew core:nodejs10Action:distDocker
 ./gradlew core:nodejs12Action:distDocker
 ./gradlew core:nodejs14Action:distDocker
 ```
 
-This will return the following runtime images with the following names: `action-nodejs-v8`, `action-nodejs-v10`, `action-nodejs-v12` and `action-nodejs-v14`.
+This will return the following runtime images with the following names: `action-nodejs-v10`, `action-nodejs-v12` and `action-nodejs-v14`.
 
 ### Testing
 
@@ -119,7 +110,6 @@ This will return the following runtime images with the following names: `action-
 - Build the custom Docker images used in local testing.
 
 ```
-./gradlew tests:dat:docker:nodejs8docker:distDocker
 ./gradlew tests:dat:docker:nodejs10docker:distDocker
 ./gradlew tests:dat:docker:nodejs12docker:distDocker
 ./gradlew tests:dat:docker:nodejs14docker:distDocker
diff --git a/core/nodejs8Action/.dockerignore b/core/nodejs8Action/.dockerignore
deleted file mode 100644
index a1d03cb..0000000
--- a/core/nodejs8Action/.dockerignore
+++ /dev/null
@@ -1,13 +0,0 @@
-*.*~
-*.yaml
-*.tmpl
-*.gradle
-.dockerignore
-.project
-.settings
-build.xml
-Dockerfile
-logs
-node_modules
-package-lock.json
-test.js
diff --git a/core/nodejs8Action/CHANGELOG.md b/core/nodejs8Action/CHANGELOG.md
deleted file mode 100644
index 7b57791..0000000
--- a/core/nodejs8Action/CHANGELOG.md
+++ /dev/null
@@ -1,136 +0,0 @@
-<!--
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
--->
-
-# NodeJS 8 OpenWhisk Runtime Container
-
-## Next release
-Changes:
-  - Update OpenWhisk npm package
-
-Node.js version = [8.17.0](https://nodejs.org/en/blog/release/v8.17.0/)
-OpenWhisk version = [OpenWhisk v3.21.2](https://www.npmjs.com/package/openwhisk)
-
-## Apache 1.15
-Changes:
-  - Update Node.js
-  - Update OpenWhisk npm package
-  - Support for __OW_ACTION_VERSION (openwhisk/4761)
-
-Node.js version = [8.17.0](https://nodejs.org/en/blog/release/v8.17.0/)
-OpenWhisk version = [OpenWhisk v3.21.1](https://www.npmjs.com/package/openwhisk)
-
-## Apache 1.13
-Changes:
-- Update Node.js
-- Update OpenWhisk npm package
-
-- [OpenWhisk v3.18.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
-
-Node.js version = [8.16.1](https://nodejs.org/en/blog/release/v8.16.1/)
-
-## 1.9.0 (Apache 1.12)
-Change: Update OpenWhisk npm package from `3.16.0` to `3.17.0`
-
-- [OpenWhisk v3.17.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
-
-## 1.8.3
-Change: Update Node.js
-
-Node.js version = [8.11.4](https://nodejs.org/en/blog/release/v8.11.4/)
-
-## 1.8.2
-Change: Update runtime to allow more environment variables
-
-- Update run handler to accept more environment variables [#78](https://github.com/apache/openwhisk-runtime-nodejs/pull/78)
-
-## 1.8.1
-Change: Update runtime to put runtime npm modules at root level, user npm modules at container invocation level
-
-- Don't override runtime npm packages when user provides their own [#73](https://github.com/apache/openwhisk-runtime-nodejs/pull/73/files)
-
-## 1.8.0
-Change: Update runtime to work in concurrent mode
-
-- Update runtime to work in concurrent mode [#41](https://github.com/apache/openwhisk-runtime-nodejs/pull/41/files)
-
-## 1.7.0
-Change: Update OpenWhisk npm package from `3.15.0` to `3.16.0`
-
-- [OpenWhisk v3.16.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
-
-## 1.6.3
-Changes:
-  - Disallow re-initialization.
-  - Fix bug where some log messages appear after the log maker.
-
-## 1.6.2
-Change: Update Node.js
-
-Node.js version = 8.11.3
-
-## 1.6.1
-Change: Update Node.js
-
-Node.js version = 8.11.2
-
-## 1.6.0
-Change: Update OpenWhisk npm package from `3.14.0` to `3.15.0`
-
-- [OpenWhisk v3.15.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
-
-## 1.5.1
-Change: Update Node.js
-
-Node.js version = 8.11.1
-
-## 1.5.0
-Change: Update Node.js
-
-Node.js version = 8.11.0
-
-## 1.4.0
-Change: Update nodejs and OpenWhisk npm package
-
-Node version = 8.10.0
-
-- [OpenWhisk v3.14.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
-
-## 1.3.0
-Change: Update npm OpenWhisk package
-
-- [OpenWhisk v3.13.1](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
-
-## 1.2.0
-Change: Update npm OpenWhisk package
-
-- [OpenWhisk v3.12.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
-
-## 1.1.0
-Change: Update nodejs and OpenWhisk npm package
-
-Node version = 8.9.3
-
-- [OpenWhisk v3.11.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
-
-## 1.0.0
-Change: Initial release
-
-Node version = 8.9.1
-
-- [OpenWhisk v3.10.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
diff --git a/core/nodejs8Action/Dockerfile b/core/nodejs8Action/Dockerfile
deleted file mode 100644
index fce88f3..0000000
--- a/core/nodejs8Action/Dockerfile
+++ /dev/null
@@ -1,43 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-FROM node:8.17.0
-
-# Initial update and some basics.
-#
-RUN apt-get update && apt-get install -y \
-    imagemagick \
-    graphicsmagick \
-    unzip \
-    && rm -rf /var/lib/apt/lists/*
-
-# Add sources and copy the package.json to root container,
-# so npm packages from user functions take precendence.
-#
-WORKDIR /nodejsAction
-ADD  . /nodejsAction/
-COPY package.json /
-
-# Customize runtime with additional packages.
-# Install package globally so user packages can override.
-#
-RUN cd / && npm install --no-package-lock --production \
-    && npm cache clean --force
-
-EXPOSE 8080
-
-CMD node --expose-gc app.js
diff --git a/core/nodejs8Action/build.gradle b/core/nodejs8Action/build.gradle
deleted file mode 100644
index e9cdc7b..0000000
--- a/core/nodejs8Action/build.gradle
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-apply plugin: 'eclipse'
-eclipse {
-    project {
-        natures 'org.eclipse.wst.jsdt.core.jsNature'
-        buildCommand 'org.eclipse.wst.jsdt.core.javascriptValidator'
-    }
-}
-
-ext.dockerImageName = 'action-nodejs-v8'
-apply from: '../../gradle/docker.gradle'
-
-distDocker.dependsOn 'copyPackageJson'
-distDocker.dependsOn 'copyProxy'
-distDocker.dependsOn 'copyRunner'
-distDocker.dependsOn 'copyService'
-distDocker.dependsOn 'copyPlatform'
-distDocker.dependsOn 'copyOpenWhisk'
-distDocker.dependsOn 'copyKnative'
-distDocker.dependsOn 'copyBuildTemplate'
-distDocker.finalizedBy('cleanup')
-
-task copyPackageJson(type: Copy) {
-    from '../nodejsActionBase/package.json'
-    into '.'
-}
-
-task copyProxy(type: Copy) {
-    from '../nodejsActionBase/app.js'
-    into '.'
-}
-
-task copyRunner(type: Copy) {
-    from '../nodejsActionBase/runner.js'
-    into '.'
-}
-
-task copyService(type: Copy) {
-    from '../nodejsActionBase/src/service.js'
-    into './src'
-}
-
-task copyPlatform(type: Copy) {
-    from '../nodejsActionBase/platform/platform.js'
-    into './platform'
-}
-
-task copyOpenWhisk(type: Copy) {
-    from '../nodejsActionBase/platform/openwhisk.js'
-    into './platform'
-}
-
-task copyKnative(type: Copy) {
-    from '../nodejsActionBase/platform/knative.js'
-    into './platform'
-}
-
-task copyBuildTemplate(type: Copy) {
-    from '../nodejsActionBase/buildtemplate.yaml'
-    into '.'
-}
-
-task cleanup(type: Delete) {
-    delete 'package.json'
-    delete 'app.js'
-    delete 'runner.js'
-    delete 'src'
-    delete 'platform'
-    delete 'buildtemplate.yaml'
-}
diff --git a/core/nodejs8Action/knative/Dockerfile b/core/nodejs8Action/knative/Dockerfile
deleted file mode 100644
index f9dcf8d..0000000
--- a/core/nodejs8Action/knative/Dockerfile
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-FROM node:8.16.1
-RUN apt-get update && apt-get install -y \
-    imagemagick \
-    graphicsmagick \
-    unzip \
-    && rm -rf /var/lib/apt/lists/*
-WORKDIR /nodejsAction
-# COPY source code "*.js" from nodejsActionBase to current working dir
-RUN mkdir /src /platform
-COPY ./core/nodejsActionBase/*.js /
-COPY ./core/nodejsActionBase/src/*.js /src/
-COPY ./core/nodejsActionBase/platform/*.js /platform/
-COPY . .
-# COPY the package.json to root container, so we can install npm packages a level up from user's packages, so user's packages take precedence
-COPY ./core/nodejs8Action/package.json /
-# COPY source code "*.js" from nodejsActionBase to current working dir
-RUN cd / && npm install --no-package-lock \
-    && npm cache clean --force
-EXPOSE 8080
-CMD node --expose-gc app.js
diff --git a/settings.gradle b/settings.gradle
index 9917e22..138f8e5 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -18,12 +18,10 @@
 include 'tests'
 
 include 'core:nodejsActionBase'
-include 'core:nodejs8Action'
 include 'core:nodejs10Action'
 include 'core:nodejs12Action'
 include 'core:nodejs14Action'
 include 'core:typescript37Action'
-include 'tests:dat:docker:nodejs8docker'
 include 'tests:dat:docker:nodejs10docker'
 include 'tests:dat:docker:nodejs12docker'
 include 'tests:dat:docker:nodejs14docker'
diff --git a/tests/dat/docker/nodejs8docker/Dockerfile b/tests/dat/docker/nodejs8docker/Dockerfile
deleted file mode 100644
index eb4e3a4..0000000
--- a/tests/dat/docker/nodejs8docker/Dockerfile
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-FROM action-nodejs-v8
-COPY package.json .
-RUN npm install --production
diff --git a/tests/dat/docker/nodejs8docker/build.gradle b/tests/dat/docker/nodejs8docker/build.gradle
deleted file mode 100644
index a3a1d74..0000000
--- a/tests/dat/docker/nodejs8docker/build.gradle
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-ext.dockerImageName = 'nodejs8docker'
-apply from: '../../../../gradle/docker.gradle'
diff --git a/tests/dat/docker/nodejs8docker/package.json b/tests/dat/docker/nodejs8docker/package.json
deleted file mode 100644
index ebfb5a4..0000000
--- a/tests/dat/docker/nodejs8docker/package.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-  "name": "testdocker",
-  "version": "1.0.0",
-  "main": "index.js",
-  "dependencies": {
-    "openwhisk": "2.0.0"
-  }
-}
\ No newline at end of file
diff --git a/tests/src/test/scala/runtime/actionContainers/NodeJs10ActionContainerTests.scala b/tests/src/test/scala/runtime/actionContainers/NodeJs10ActionContainerTests.scala
index d721965..a7bcc44 100644
--- a/tests/src/test/scala/runtime/actionContainers/NodeJs10ActionContainerTests.scala
+++ b/tests/src/test/scala/runtime/actionContainers/NodeJs10ActionContainerTests.scala
@@ -21,7 +21,7 @@ import org.junit.runner.RunWith
 import org.scalatest.junit.JUnitRunner
 
 @RunWith(classOf[JUnitRunner])
-class NodeJs10ActionContainerTests extends NodeJs8ActionContainerTests {
+class NodeJs10ActionContainerTests extends NodeJsActionContainerTests {
   override lazy val nodejsContainerImageName = "action-nodejs-v10"
   override lazy val nodejsTestDockerImageName = "nodejs10docker"
 }
diff --git a/tests/src/test/scala/runtime/actionContainers/NodeJs12ActionContainerTests.scala b/tests/src/test/scala/runtime/actionContainers/NodeJs12ActionContainerTests.scala
index d04fb0b..efba569 100644
--- a/tests/src/test/scala/runtime/actionContainers/NodeJs12ActionContainerTests.scala
+++ b/tests/src/test/scala/runtime/actionContainers/NodeJs12ActionContainerTests.scala
@@ -21,7 +21,7 @@ import org.junit.runner.RunWith
 import org.scalatest.junit.JUnitRunner
 
 @RunWith(classOf[JUnitRunner])
-class NodeJs12ActionContainerTests extends NodeJs8ActionContainerTests {
+class NodeJs12ActionContainerTests extends NodeJsActionContainerTests {
   override lazy val nodejsContainerImageName = "action-nodejs-v12"
   override lazy val nodejsTestDockerImageName = "nodejs12docker"
 }
diff --git a/tests/src/test/scala/runtime/actionContainers/NodeJs14ActionContainerTests.scala b/tests/src/test/scala/runtime/actionContainers/NodeJs14ActionContainerTests.scala
index 72418b4..ec386c8 100644
--- a/tests/src/test/scala/runtime/actionContainers/NodeJs14ActionContainerTests.scala
+++ b/tests/src/test/scala/runtime/actionContainers/NodeJs14ActionContainerTests.scala
@@ -21,7 +21,7 @@ import org.junit.runner.RunWith
 import org.scalatest.junit.JUnitRunner
 
 @RunWith(classOf[JUnitRunner])
-class NodeJs14ActionContainerTests extends NodeJs8ActionContainerTests {
+class NodeJs14ActionContainerTests extends NodeJsActionContainerTests {
   override lazy val nodejsContainerImageName = "action-nodejs-v14"
   override lazy val nodejsTestDockerImageName = "nodejs14docker"
 }
diff --git a/tests/src/test/scala/runtime/actionContainers/NodeJs8ActionContainerTests.scala b/tests/src/test/scala/runtime/actionContainers/NodeJs8ActionContainerTests.scala
deleted file mode 100644
index c487b89..0000000
--- a/tests/src/test/scala/runtime/actionContainers/NodeJs8ActionContainerTests.scala
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package runtime.actionContainers
-
-import org.junit.runner.RunWith
-import org.scalatest.junit.JUnitRunner
-import spray.json.JsObject
-
-@RunWith(classOf[JUnitRunner])
-class NodeJs8ActionContainerTests extends NodeJsNonConcurrentTests {
-
-  override lazy val nodejsContainerImageName = "action-nodejs-v8"
-  override lazy val nodejsTestDockerImageName = "nodejs8docker"
-
-  it should "support async and await" in {
-    withNodeJsContainer { c =>
-      val code = """
-                   | const util = require('util');
-                   | const fs = require('fs');
-                   |
-                   | const stat = util.promisify(fs.stat);
-                   |
-                   | async function main() {
-                   |   const stats = await stat('.');
-                   |   return stats
-                   | }
-                 """.stripMargin;
-
-      val (initCode, _) = c.init(initPayload(code))
-      initCode should be(200)
-
-      val (runCode, runRes) = c.run(runPayload(JsObject()))
-      runCode should be(200) // action writer returning an error is OK
-
-      runRes shouldBe defined
-      runRes.get.fields.get("uid") shouldBe defined
-    }
-  }
-
-  it should "support errors thrown from async functions" in {
-    withNodeJsContainer { c =>
-      val code = """
-                   | async function main() {
-                   |   return a.b.c
-                   | }
-                 """.stripMargin;
-
-      val (initCode, _) = c.init(initPayload(code))
-      initCode should be(200)
-
-      val (runCode, runRes) = c.run(runPayload(JsObject()))
-      runCode should be(200) // action writer returning an error is OK
-
-      runRes shouldBe defined
-      runRes.get.fields.get("error") shouldBe defined
-      runRes.get.fields("error").toString.toLowerCase should include("referenceerror: a is not defined")
-    }
-  }
-
-  it should "support user thrown errors from async functions" in {
-    withNodeJsContainer { c =>
-      val code = """
-                   | async function main() {
-                   |   throw new Error('app error')
-                   | }
-                 """.stripMargin;
-
-      val (initCode, _) = c.init(initPayload(code))
-      initCode should be(200)
-
-      val (runCode, runRes) = c.run(runPayload(JsObject()))
-      runCode should be(200) // action writer returning an error is OK
-
-      runRes shouldBe defined
-      runRes.get.fields.get("error") shouldBe defined
-      runRes.get.fields("error").toString.toLowerCase should include("error: app error")
-    }
-  }
-
-}
diff --git a/tests/src/test/scala/runtime/actionContainers/NodeJs8ConcurrentTests.scala b/tests/src/test/scala/runtime/actionContainers/NodeJs8ConcurrentTests.scala
deleted file mode 100644
index 7769d20..0000000
--- a/tests/src/test/scala/runtime/actionContainers/NodeJs8ConcurrentTests.scala
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package runtime.actionContainers
-
-import org.junit.runner.RunWith
-import org.scalatest.junit.JUnitRunner
-
-@RunWith(classOf[JUnitRunner])
-class NodeJs8ConcurrentTests extends NodeJsConcurrentTests {
-  override lazy val nodejsContainerImageName = "action-nodejs-v8"
-  override lazy val nodejsTestDockerImageName = "nodejs8docker"
-}
diff --git a/tests/src/test/scala/runtime/actionContainers/NodeJsActionContainerTests.scala b/tests/src/test/scala/runtime/actionContainers/NodeJsActionContainerTests.scala
index 2c94e82..bb78180 100644
--- a/tests/src/test/scala/runtime/actionContainers/NodeJsActionContainerTests.scala
+++ b/tests/src/test/scala/runtime/actionContainers/NodeJsActionContainerTests.scala
@@ -865,4 +865,72 @@ abstract class NodeJsActionContainerTests extends BasicActionRunnerTests with Ws
       runRes.get.fields.get("message") shouldBe Some(JsString("success"))
     }
   }
+
+  it should "support async and await" in {
+    assume(!isTypeScript)
+    withNodeJsContainer { c =>
+      val code = """
+                   | const util = require('util');
+                   | const fs = require('fs');
+                   |
+                   | const stat = util.promisify(fs.stat);
+                   |
+                   | async function main() {
+                   |   const stats = await stat('.');
+                   |   return stats
+                   | }
+                 """.stripMargin;
+
+      val (initCode, _) = c.init(initPayload(code))
+      initCode should be(200)
+
+      val (runCode, runRes) = c.run(runPayload(JsObject()))
+      runCode should be(200) // action writer returning an error is OK
+
+      runRes shouldBe defined
+      runRes.get.fields.get("uid") shouldBe defined
+    }
+  }
+
+  it should "support errors thrown from async functions" in {
+    assume(!isTypeScript)
+    withNodeJsContainer { c =>
+      val code = """
+                   | async function main() {
+                   |   return a.b.c
+                   | }
+                 """.stripMargin;
+
+      val (initCode, _) = c.init(initPayload(code))
+      initCode should be(200)
+
+      val (runCode, runRes) = c.run(runPayload(JsObject()))
+      runCode should be(200) // action writer returning an error is OK
+
+      runRes shouldBe defined
+      runRes.get.fields.get("error") shouldBe defined
+      runRes.get.fields("error").toString.toLowerCase should include("referenceerror: a is not defined")
+    }
+  }
+
+  it should "support user thrown errors from async functions" in {
+    assume(!isTypeScript)
+    withNodeJsContainer { c =>
+      val code = """
+                   | async function main() {
+                   |   throw new Error('app error')
+                   | }
+                 """.stripMargin;
+
+      val (initCode, _) = c.init(initPayload(code))
+      initCode should be(200)
+
+      val (runCode, runRes) = c.run(runPayload(JsObject()))
+      runCode should be(200) // action writer returning an error is OK
+
+      runRes shouldBe defined
+      runRes.get.fields.get("error") shouldBe defined
+      runRes.get.fields("error").toString.toLowerCase should include("error: app error")
+    }
+  }
 }
diff --git a/tests/src/test/scala/runtime/actionContainers/NodeJsConcurrentTests.scala b/tests/src/test/scala/runtime/actionContainers/NodeJsConcurrentTests.scala
index 47fc858..1485b7b 100644
--- a/tests/src/test/scala/runtime/actionContainers/NodeJsConcurrentTests.scala
+++ b/tests/src/test/scala/runtime/actionContainers/NodeJsConcurrentTests.scala
@@ -23,8 +23,6 @@ import spray.json.JsString
 
 abstract class NodeJsConcurrentTests extends NodeJsActionContainerTests {
 
-  override lazy val nodejsContainerImageName = "action-nodejs-v8"
-
   override def withNodeJsContainer(code: ActionContainer => Unit) =
     withActionContainer(Map("__OW_ALLOW_CONCURRENT" -> "true"))(code)