diff --git a/.github/workflows/end-to-end.yml b/.github/workflows/end-to-end.yml new file mode 100644 index 0000000..07e5c36 --- /dev/null +++ b/.github/workflows/end-to-end.yml @@ -0,0 +1,80 @@ +name: E2E Tests + +on: + push: + branches: + - master + schedule: + - cron: '20 5 * * 1' + workflow_dispatch: + +jobs: + node: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [16.x, 18.x, 20.x] + fail-fast: false + + steps: + - uses: actions/checkout@v3 + + - name: Set up Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: npm + cache-dependency-path: example-project/package-lock.json + + - name: Install dependencies + run: npm install + working-directory: ./example-project + + - name: Run example project with valid token + run: node index.js ${{ secrets.SOURCE_TOKEN }} + working-directory: ./example-project + + - name: Run example project with invalid token + run: | + if node index.js INVALID_TOKEN; then + echo "This should have failed but didn't" + exit 1 + else + echo "Failed successfully" + fi + working-directory: ./example-project + + tests-bun: + runs-on: ubuntu-latest + + strategy: + matrix: + bun-version: [latest, 1.0.0] + fail-fast: false + + steps: + - uses: actions/checkout@v3 + + - name: Set up Bun ${{ matrix.bun-version }} + uses: oven-sh/setup-bun@v1 + with: + bun-version: ${{ matrix.bun-version }} + + - name: Install dependencies + run: bun install + working-directory: ./example-project + + - name: Run example project with valid token + run: bun run index.js ${{ secrets.SOURCE_TOKEN }} + working-directory: ./example-project + + - name: Run example project with invalid token + run: | + if bun run index.js INVALID_TOKEN; then + echo "This should have failed but didn't" + exit 1 + else + echo "Failed successfully" + fi + working-directory: ./example-project diff --git a/example-project/index.js b/example-project/index.js index e9bfa30..dbd7585 100644 --- a/example-project/index.js +++ b/example-project/index.js @@ -19,7 +19,7 @@ const logger = new Logtail(process.argv[2], { sendLogsToConsoleOutput: true }); // Usage // Send debug level log using the debug() method -const debugLog = logger.debug("I am using Better Stack!"); +const debugLog = logger.debug(`I am using Better Stack! (${process.title} v${process.versions?.[process.title]})`); // Send info level log using the info() method const infoLog = logger.info("An interesting event occurred!"); @@ -50,8 +50,15 @@ try { // Logging methods are async function returning Promises Promise.all([debugLog, infoLog, warningLog, errorLog]).then( - // OnResolve write message function() { - console.log("All done! You can check your logs now.") + console.info("All done! You can check your logs now."); + + console.log("Logs created: ", logger.logged); + console.log("Successfully synced logs: ", logger.synced); + + if (logger.logged !== logger.synced) { + console.error("Not all logs have been synced!"); + process.exit(1); + } } );