github.com/web-platform-tests/wpt.fyi@v0.0.0-20240530210107-70cf978996f1/api/checks/summaries/compile_test.go (about)

     1  //go:build medium
     2  // +build medium
     3  
     4  // Copyright 2018 The WPT Dashboard Project. All rights reserved.
     5  // Use of this source code is governed by a BSD-style license that can be
     6  // found in the LICENSE file.
     7  
     8  package summaries
     9  
    10  import (
    11  	"flag"
    12  	"log"
    13  	"strings"
    14  	"testing"
    15  
    16  	"github.com/stretchr/testify/assert"
    17  	"github.com/web-platform-tests/wpt.fyi/shared"
    18  )
    19  
    20  // To output the rendered content during execution of the test(s), set this flag, e.g.
    21  // go test ./api/checks/summaries -tags="medium" -print_output -test.v
    22  var renderOutputToConsole = flag.Bool("print_output", false, "Whether to render compiled markdown during test execution.")
    23  
    24  func TestGetSummary_Completed(t *testing.T) {
    25  	master := shared.TestRun{}
    26  	master.BrowserName = "chrome"
    27  	master.Revision = "abcdef0123"
    28  	master.FullRevisionHash = strings.Repeat(master.Revision, 4)
    29  	pr := shared.TestRun{}
    30  	pr.BrowserName = "chrome"
    31  	pr.Revision = "0123456789"
    32  	pr.FullRevisionHash = strings.Repeat(pr.Revision, 4)
    33  	foo := Completed{}
    34  	foo.BaseRun = master
    35  	foo.HeadRun = pr
    36  	foo.DiffURL = "https://foo.com/diff?before=chrome[master]&after=chrome@0123456789"
    37  	foo.HostName = "foo.com"
    38  	foo.HostURL = "https://foo.com/"
    39  	testName := "/foo.html?exclude=(Document|window|HTML.*)"
    40  	foo.Results = BeforeAndAfter{
    41  		testName: TestBeforeAndAfter{
    42  			PassingBefore: 2,
    43  			TotalBefore:   3,
    44  			PassingAfter:  2,
    45  			TotalAfter:    2,
    46  		},
    47  	}
    48  	foo.More = 1
    49  
    50  	s, err := foo.GetSummary()
    51  	printOutput(s)
    52  	if err != nil {
    53  		assert.FailNow(t, err.Error())
    54  	}
    55  	assert.Contains(t, s, foo.HostName)
    56  	assert.Contains(t, s, foo.HostURL)
    57  	assert.Contains(t, s, foo.DiffURL)
    58  	assert.Contains(t, s, "2 / 3")
    59  	assert.Contains(t, s, "And 1 others...")
    60  	assert.Contains(t, s, foo.FileIssueURL().String())
    61  
    62  	// And with MasterDiffURL
    63  	foo.MasterDiffURL = "https://foo.com/?products=chrome[master],chrome@0123456789&diff"
    64  	s, err = foo.GetSummary()
    65  	printOutput(s)
    66  	if err != nil {
    67  		assert.FailNow(t, err.Error())
    68  	}
    69  	assert.Contains(t, s, foo.MasterDiffURL)
    70  
    71  	// With PRNumbers
    72  	foo.PRNumbers = []int{123}
    73  	s, err = foo.GetSummary()
    74  	printOutput(s)
    75  	if err != nil {
    76  		assert.FailNow(t, err.Error())
    77  	}
    78  	assert.Contains(t, s, escapeMD(testName))
    79  	assert.Contains(t, s, "https://foo.com/runs/?pr=123")
    80  	assert.Contains(t, s, "https://foo.com/results/?pr=123")
    81  }
    82  
    83  func TestGetSummary_Pending(t *testing.T) {
    84  	foo := Pending{
    85  		RunsURL: "https://foo.com/runs?products=chrome&sha=0123456789",
    86  	}
    87  	foo.HostName = "https://foo.com"
    88  	s, err := foo.GetSummary()
    89  	printOutput(s)
    90  	if err != nil {
    91  		assert.FailNow(t, err.Error())
    92  	}
    93  	assert.Contains(t, s, foo.HostName)
    94  	assert.Contains(t, s, foo.RunsURL)
    95  	assert.Contains(t, s, foo.FileIssueURL().String())
    96  }
    97  
    98  func TestGetSummary_Regressed(t *testing.T) {
    99  	master := shared.TestRun{}
   100  	master.BrowserName = "chrome"
   101  	master.Revision = "abcdef0123"
   102  	master.FullRevisionHash = strings.Repeat(master.Revision, 4)
   103  	pr := shared.TestRun{}
   104  	pr.BrowserName = "chrome"
   105  	pr.Revision = "0123456789"
   106  	pr.FullRevisionHash = strings.Repeat(pr.Revision, 4)
   107  	foo := Regressed{}
   108  	foo.BaseRun = master
   109  	foo.HeadRun = pr
   110  	foo.HostName = "foo.com"
   111  	foo.HostURL = "https://foo.com/"
   112  	foo.DiffURL = "https://foo.com/?products=chrome@0000000000,chrome@0123456789&diff"
   113  	testName := "/foo.html?exclude=(Document|window|HTML.*)"
   114  	foo.Regressions = BeforeAndAfter{
   115  		testName: TestBeforeAndAfter{
   116  			PassingBefore: 1,
   117  			TotalBefore:   1,
   118  			PassingAfter:  0,
   119  			TotalAfter:    1,
   120  		},
   121  	}
   122  	foo.More = 1
   123  
   124  	s, err := foo.GetSummary()
   125  	printOutput(s)
   126  	if err != nil {
   127  		assert.FailNow(t, err.Error())
   128  	}
   129  	assert.Contains(t, s, foo.HostName)
   130  	assert.Contains(t, s, foo.HostURL)
   131  	assert.Contains(t, s, foo.DiffURL)
   132  	assert.Contains(t, s, master.String())
   133  	assert.Contains(t, s, pr.String())
   134  	assert.Contains(t, s, "0 / 1")
   135  	assert.Contains(t, s, "1 / 1")
   136  	assert.Contains(t, s, "And 1 others...")
   137  	assert.Contains(t, s, foo.FileIssueURL().String())
   138  
   139  	// And with MasterDiffURL
   140  	foo.MasterDiffURL = "https://foo.com/?products=chrome[master],chrome@0123456789&diff"
   141  	s, err = foo.GetSummary()
   142  	printOutput(s)
   143  	if err != nil {
   144  		assert.FailNow(t, err.Error())
   145  	}
   146  	assert.Contains(t, s, foo.MasterDiffURL)
   147  
   148  	// With PRNumbers
   149  	foo.PRNumbers = []int{123}
   150  	s, err = foo.GetSummary()
   151  	printOutput(s)
   152  	if err != nil {
   153  		assert.FailNow(t, err.Error())
   154  	}
   155  	assert.Contains(t, s, "https://foo.com/runs/?pr=123")
   156  	assert.Contains(t, s, "https://foo.com/results/?pr=123")
   157  }
   158  
   159  func printOutput(s string) {
   160  	if *renderOutputToConsole {
   161  		log.Printf("MD output:\n-----------\n%s", s)
   162  	}
   163  }