Introduction
Hello everyone, my name is Dustin, today I'd like to talk about my experience working with Github Actions and some testings in Javascript.
At a glance
Github Actions was easy to set up as it's written beforehand, I just needed to remove 1 line of building step because I don't need it yet. But making my code to run and pass all 3 node versions was quite difficult. I ran into trouble a lot of times.
Progress
First, I decided to migrate from Commander to Yargs in order to make the code clearer. And then I added some more tests for the e2e test to make sure that help option and version option are working as I expected. As I was running the tests, I found out there's some errors happening and needed to be fixed as soon as possible. So I created a separate branch to fix it. The problem involved resolve
variable in promise because I accidentally added curly braces around them. As I progressed, I decided to clean up my code a little bit more so I moved from using sync functions to async functions in the produceFolder
class.
After that, I pushed the code to my repo, and it seemed like Github wasn't very happy with my package-lock.json
and __snapshots__
for some reason. So I had to npm install
and delete __snapshots__
and run the test again.
What I have for my github actions is
name: Node.js CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12.x, 14.x, 16.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm ci
- run: npm test
Unfortunately, it was only successful on the first 2 node versions, not the 16 one due to rm
and mkdir
. There was also a problem with rmdir
because in Node 16, If I remember correctly, it won't be supported anymore so I had to only use mkdir
to create a folder. I also had to add {recursive: true}
just in case the folder already exists.
Wrap up
After a day struggling, I've successfully passed all 3 tests from Github actions and I've learnt a lot from it, especially using Git.
My testing still needs to be improved as it just covers some basics, not every edge case because testing takes a lot of time and thinking. More testing will be added later.
Top comments (0)