DEV Community

jsong89
jsong89

Posted on

1

Testing.. how?!

Github repo: Repo
Github github actions run: Action Run
Testing PR at Another Repo: Another Repo

Add CI

This week's Lab09 was to apply CI and check the compatibility of the test code using Github Action for the function. I added node.js.yaml for this task.

name: Node.js CI

on:
  push:
    branches: [master]
  pull_request:
    branches: [master]

jobs:
  build:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [14.x, 15.x]

    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node-version }}
      - run: npm ci
      - run: npm run build --if-present
      - run: npm test

Enter fullscreen mode Exit fullscreen mode

It is possible to remove or add a version to test the node of the desired version by modifying node-version in the relevant part. In my case, I only tested the 14.x and 16.x versions because the core features of SSG are based on Node 14. At first, I didn't understand why I had to do this, but after a while I realized the importance of compatibility. In addition, it is now possible to know which parts are in conflict before the application of PR.

Add test another Project

To meet the other requirements of Lab09, I collaborated with Hung Nguyen, a student I had worked with previously, and Mizuho Okimoto, a very cool and fun new collaborator. After adding the simple level test code in the student's project

describe("test syntaxHighlight", () => {
  const prepareForHead = () => {
    const head = parse(`<head>
          <meta charset="UTF-8">
          <meta http-equiv="X-UA-Compatible" content="IE=edge">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Document</title>
      </head>`);
    return head;
  };
  const prepareForBody = () => {
    const body = parse(`<body>
          <pre>will be highlight</pre>  
      </body>`);
    return body;
  };

  test("No commands were passed", () => {
    const body = prepareForBody();
    const head = prepareForHead();
    syntaxHighlight(body, head);
    expect(head.querySelector("link")).not.toBeNull();
    expect(
      body.querySelector("pre").classList.contains("highlight")
    ).toBeTruthy();
  });
});

Enter fullscreen mode Exit fullscreen mode

As a result of the CI, fortunately, it passed safely and I requested a PR.

SurveyJS custom survey software

JavaScript UI Libraries for Surveys and Forms

SurveyJS lets you build a JSON-based form management system that integrates with any backend, giving you full control over your data and no user limits. Includes support for custom question types, skip logic, integrated CCS editor, PDF export, real-time analytics & more.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay