• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

playwright-community / playwright-go / 24248439012

10 Apr 2026 02:39PM UTC coverage: 80.326% (-0.1%) from 80.426%
24248439012

Pull #587

github

Sim-hu
chore: rerun ci
Pull Request #587: fix: handle typed request header maps

19 of 34 new or added lines in 1 file covered. (55.88%)

1 existing line in 1 file now uncovered.

7680 of 9561 relevant lines covered (80.33%)

6369.68 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

75.38
/network.go
1
package playwright
2

3
import (
4
        "strings"
5
)
6

7
type rawHeaders struct {
8
        headersArray []NameValue
9
        headersMap   map[string][]string
10
}
11

12
func (r *rawHeaders) Get(name string) string {
5,320✔
13
        values := r.GetAll(name)
5,320✔
14
        if len(values) == 0 {
5,337✔
15
                return ""
17✔
16
        }
17✔
17
        sep := ", "
5,303✔
18
        if strings.ToLower(name) == "set-cookie" {
5,329✔
19
                sep = "\n"
26✔
20
        }
26✔
21
        return strings.Join(values, sep)
5,303✔
22
}
23

24
func (r *rawHeaders) GetAll(name string) []string {
5,352✔
25
        name = strings.ToLower(name)
5,352✔
26
        if _, ok := r.headersMap[name]; !ok {
5,377✔
27
                return []string{}
25✔
28
        }
25✔
29
        return r.headersMap[name]
5,327✔
30
}
31

32
func (r *rawHeaders) Headers() map[string]string {
757✔
33
        out := make(map[string]string)
757✔
34
        for key := range r.headersMap {
5,999✔
35
                out[key] = r.Get(key)
5,242✔
36
        }
5,242✔
37
        return out
757✔
38
}
39

40
func (r *rawHeaders) HeadersArray() []NameValue {
26✔
41
        return r.headersArray
26✔
42
}
26✔
43

44
func (r *rawHeaders) addHeader(name, value string) {
61,316✔
45
        r.headersArray = append(r.headersArray, NameValue{
61,316✔
46
                Name:  name,
61,316✔
47
                Value: value,
61,316✔
48
        })
61,316✔
49
        if _, ok := r.headersMap[strings.ToLower(name)]; !ok {
116,989✔
50
                r.headersMap[strings.ToLower(name)] = make([]string, 0)
55,673✔
51
        }
55,673✔
52
        r.headersMap[strings.ToLower(name)] = append(r.headersMap[strings.ToLower(name)], value)
61,316✔
53
}
54

55
func newRawHeaders(headers any) *rawHeaders {
8,642✔
56
        r := &rawHeaders{}
8,642✔
57
        r.headersArray = make([]NameValue, 0)
8,642✔
58
        r.headersMap = make(map[string][]string)
8,642✔
59
        switch typed := headers.(type) {
8,642✔
60
        case []any:
8,633✔
61
                for _, header := range typed {
69,922✔
62
                        switch entry := header.(type) {
61,289✔
63
                        case map[string]any:
61,289✔
64
                                r.addHeader(entry["name"].(string), entry["value"].(string))
61,289✔
NEW
65
                        case map[string]string:
×
NEW
66
                                r.addHeader(entry["name"], entry["value"])
×
NEW
67
                        case NameValue:
×
NEW
68
                                r.addHeader(entry.Name, entry.Value)
×
NEW
69
                        default:
×
NEW
70
                                panic(header)
×
71
                        }
72
                }
NEW
73
        case []map[string]any:
×
NEW
74
                for _, entry := range typed {
×
NEW
75
                        r.addHeader(entry["name"].(string), entry["value"].(string))
×
NEW
76
                }
×
77
        case []map[string]string:
9✔
78
                for _, entry := range typed {
36✔
79
                        r.addHeader(entry["name"], entry["value"])
27✔
80
                }
27✔
NEW
81
        case []NameValue:
×
NEW
82
                for _, entry := range typed {
×
NEW
83
                        r.addHeader(entry.Name, entry.Value)
×
UNCOV
84
                }
×
NEW
85
        default:
×
NEW
86
                panic(headers)
×
87
        }
88
        return r
8,642✔
89
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc