Sending a message to a Slack-Channel

This example shows a way how to send a message to a Slack-Channel. The solution uses a userdefined method that can be used in different ways. For example, you could use it after finishing a testsuite or when a specific testcase fails.

Please note our exclusion of liability when using this example.

Userdefined Method

Please note that the method uses a global parameter called “SlackWebhook_common”. Create a webhook in slack and create this global parameter in BiG EVAL with the value of the URL of the webhook.

private async Task PostToSlackAsync(string message)
        // Get the Slack-Webhook URL from the global parameters.
        var url = GetParameter("SlackWebhook_Common").ToString();
        // Create a request using an URL that can receive a post.
        var request = WebRequest.Create(url);
        // Set the Method property of the request to POST.
        request.Method = "POST";

        // Construct the JSON-body to send to the Slack-Webhook and convert it to a byte array.
        var json = "{ 'text':'" + message + "' }";
        var byteArray = Encoding.UTF8.GetBytes(json);

        // Set the ContentType property of the WebRequest.
        request.ContentType = "application/json";

        // Set the ContentLength property of the WebRequest.
        request.ContentLength = byteArray.Length;

        // Get the request stream.
        var dataStream = request.GetRequestStream();

        // Write the data to the request stream.
        dataStream.Write(byteArray, 0, byteArray.Length);

        // Close the Stream object.

        // Get the response.
        WebResponse response = request.GetResponse();
        var statusCode = ((HttpWebResponse)response).StatusCode;

            case HttpStatusCode.OK:
                LogInfo("Slack-Message successfully posted!");

                throw new Exception($"Couldn't post to slack. StatusCode: {statusCode}");                
    catch(Exception ex) 
        LogError(ex, "Slack-Message couldn't be posted!");

Using the userdefined Method

The following testcase-script shows how to use the method to send a message to slack depending on the testcase-outcome.

// Execute test
var info = await ExecuteAsync();

// Define the Slack-Message depending ont he outcome of the testrun.
var message = "";
    case "success":
        message = $"The testrun {info.RunId} was successful!";

        message = $"The testrun {info.RunId} failed with status '{info.TestResultStatus}'!";

// Post to Slack
await PostToSlackAsync(message);

Table of Contents