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 }