1.0.1 • Published 12 months ago

cypress-send-to-teams v1.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
12 months ago

cypress-send-to-teams

A module to send Cypress test results to a Microsoft Teams webhook using Adaptive Cards.

Installation

You can install this module using npm:

npm install cypress-send-to-teams

Usage

Basic Usage

Import the module and call it with the required parameters:

const sendToTeams = require("cypress-send-to-teams");

// Example usage
sendToTeams(
  "https://your-webhook-url",
  "Test Results",
  [
    {
      title: ["Test 1", "Sub-test 1"],
      state: "failed",
      displayError: "An error occurred",
    },
    // More test results...
  ],
  {
    name: "test-file.js",
  }
);

Parameters

  • webhookUrl (string): The Microsoft Teams webhook URL.
  • title (string): The title of the message to be sent.
  • tests (Array): An array of test result objects. Each object should have:
    • title (Array): An array with two strings, the main title and sub-title.
    • state (string): The state of the test ('passed' or 'failed').
    • displayError (string): The error message if the test failed.
  • spec (object): An object representing the test file spec. It should have a name property.
  • isOnlySendingBugs (boolean, optional): Whether to send only failed tests. Default is true.
  • testItemTemplateHandler (function, optional): A function to customize the test item format. It defaults to defaultCreateTestItem.

Example

// cypress.config.ts

const { defineConfig } = require("cypress");
const sendToTeams = require('cypress-send-to-teams');

// Custom test item handler
const customTestItemHandler = (test, spec) => ({
  type: "Container",
  spacing: "Medium",
  items: [
    {
      type: "TextBlock",
      text: `Test: ${test.title[0]}`,
      wrap: true,
      size: "Medium",
      weight: "Bolder",
    },
    {
      type: "TextBlock",
      text: `File: ${spec.name}`,
      wrap: true,
      size: "Medium",
      weight: "Lighter",
    },
    {
      type: "TextBlock",
      text: `Status: ${test.state.toUpperCase()}`,
      wrap: true,
      size: "Medium",
      color: "Attention",
      weight: "Lighter",
    },
    {
      type: "TextBlock",
      text: test.displayError,
      wrap: true,
      size: "Medium",
      color: "Attention",
      weight: "Lighter",
    },
  ],
});

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      on("after:spec", async (spec, results) => {
        if (
          results &&
          results.stats &&
          results.stats.failures > 0
        ) {
          console.log("spec", spec);
          await sendToTeams(
              'https://your-webhook-url',
              'Custom Test Results',
              [
                {
                  title: ['Custom Test 1', 'Sub-test 1'],
                  state: 'failed',
                  displayError: 'Custom error message'
                },
                // More test results...
              ],
              {
                name: 'custom-test-file.js'
              },
              true, // only send bugs
              customTestItemHandler // custom handler
            );
            .then((response) => {
              console.log("Adaptive Card posted to Teams:", response.data);
            })
            .catch((error) => {
              console.error("Error posting Adaptive Card to Teams:", error);
            });
        }
      });
    },
  },
});

Dependencies

License

ISC License. See the LICENSE file for more details.

Author

John Patrick Valera

Feel free to adjust any part to better suit your needs or preferences!
1.0.1

12 months ago

1.0.0

12 months ago