File view with blame information shown in the left gutter beside each line.

barerepo / server / e2e/sharetext_test.go
73 lines · 2.0kb · 133728eaa05486504991b230f9d4c7e986b7defc
log files threads runs releases config jump to file t
133728e barerepo 1mo
1
package e2e
133728e barerepo 1mo
2
133728e barerepo 1mo
3
import (
133728e barerepo 1mo
4
"os/exec"
133728e barerepo 1mo
5
"strings"
133728e barerepo 1mo
6
"testing"
133728e barerepo 1mo
7
)
133728e barerepo 1mo
8
133728e barerepo 1mo
9
// The sr-only summary describes the page to a screen reader, and reads as a spec anywhere else.
133728e barerepo 1mo
10
func TestALinkPreviewSaysWhatTheThingIsNotWhatThePageIs(t *testing.T) {
133728e barerepo 1mo
11
if _, err := exec.LookPath("git"); err != nil {
133728e barerepo 1mo
12
t.Skip("git is not installed")
133728e barerepo 1mo
13
}
133728e barerepo 1mo
14
in := newInstance(t)
133728e barerepo 1mo
15
john := in.account("john")
133728e barerepo 1mo
16
work := seed(t, in, john, "john", "johnbot")
133728e barerepo 1mo
17
133728e barerepo 1mo
18
write(t, work, ".barerepo/config", "[repo]\nvisibility = \"public\"\n"+
133728e barerepo 1mo
19
"description = \"a bot that answers\"\n")
133728e barerepo 1mo
20
run(t, work, "git", "add", "-A")
133728e barerepo 1mo
21
run(t, work, "git", "commit", "-qm", "describe the repository")
133728e barerepo 1mo
22
run(t, work, "git", "push", "-q", in.url(john, "/john/johnbot"), "master")
133728e barerepo 1mo
23
133728e barerepo 1mo
24
for _, c := range []struct {
133728e barerepo 1mo
25
what, path string
133728e barerepo 1mo
26
want []string
133728e barerepo 1mo
27
}{
133728e barerepo 1mo
28
{"the repository log", "/john/johnbot", []string{"john/johnbot", "a bot that answers"}},
133728e barerepo 1mo
29
{"the profile", "/john", []string{"john", "repositor"}},
133728e barerepo 1mo
30
} {
133728e barerepo 1mo
31
code, _, body := get(t, in.http.URL+c.path)
133728e barerepo 1mo
32
if code != 200 {
133728e barerepo 1mo
33
t.Fatalf("%s answered %d", c.what, code)
133728e barerepo 1mo
34
}
133728e barerepo 1mo
35
og := metaContent(body, "og:description")
133728e barerepo 1mo
36
if og == "" {
133728e barerepo 1mo
37
t.Errorf("%s has no og:description", c.what)
133728e barerepo 1mo
38
continue
133728e barerepo 1mo
39
}
133728e barerepo 1mo
40
if strings.Contains(og, "This is the landing page") ||
133728e barerepo 1mo
41
strings.Contains(og, "listing repositories sorted by last push") {
133728e barerepo 1mo
42
t.Errorf("%s shares the screen reader summary: %q", c.what, og)
133728e barerepo 1mo
43
}
133728e barerepo 1mo
44
for _, w := range c.want {
133728e barerepo 1mo
45
if !strings.Contains(og, w) {
133728e barerepo 1mo
46
t.Errorf("%s og:description %q does not say %q", c.what, og, w)
133728e barerepo 1mo
47
}
133728e barerepo 1mo
48
}
133728e barerepo 1mo
49
// The screen reader sentence must still be on the page, which chapter 25 requires.
133728e barerepo 1mo
50
if !strings.Contains(body, "sr-only") {
133728e barerepo 1mo
51
t.Errorf("%s lost its screen reader summary", c.what)
133728e barerepo 1mo
52
}
133728e barerepo 1mo
53
}
133728e barerepo 1mo
54
}
133728e barerepo 1mo
55
133728e barerepo 1mo
56
// metaContent pulls one meta tag's content out of a page.
133728e barerepo 1mo
57
func metaContent(body, prop string) string {
133728e barerepo 1mo
58
i := strings.Index(body, `property="`+prop+`"`)
133728e barerepo 1mo
59
if i < 0 {
133728e barerepo 1mo
60
return ""
133728e barerepo 1mo
61
}
133728e barerepo 1mo
62
rest := body[i:]
133728e barerepo 1mo
63
j := strings.Index(rest, `content="`)
133728e barerepo 1mo
64
if j < 0 {
133728e barerepo 1mo
65
return ""
133728e barerepo 1mo
66
}
133728e barerepo 1mo
67
rest = rest[j+len(`content="`):]
133728e barerepo 1mo
68
k := strings.Index(rest, `"`)
133728e barerepo 1mo
69
if k < 0 {
133728e barerepo 1mo
70
return ""
133728e barerepo 1mo
71
}
133728e barerepo 1mo
72
return rest[:k]
133728e barerepo 1mo
73
}
history · rawbarerepo 0.1.0