Best Gauge code snippet using infoGatherer.Tags
completion_test.go
Source:completion_test.go
...89}90func (p dummyInfoProvider) Params(file string, argType gauge.ArgType) []gauge.StepArg {91 return []gauge.StepArg{{Value: "hello", ArgType: gauge.Static}, {Value: "gauge", ArgType: gauge.Static}}92}93func (p dummyInfoProvider) Tags() []string {94 return []string{"hello"}95}96func (p dummyInfoProvider) GetSpecDirs() []string {97 return []string{"specs"}98}99func (p dummyInfoProvider) SearchConceptDictionary(stepValue string) *gauge.Concept {100 return &(gauge.Concept{FileName: "concept_uri.cpt", ConceptStep: &gauge.Step{101 Value: "concept1",102 LineNo: 1,103 LineText: "concept1",104 }})105}106func TestCompletion(t *testing.T) {107 openFilesCache = &files{cache: make(map[lsp.DocumentURI][]string)}108 openFilesCache.add("uri", " * ")109 position := lsp.Position{Line: 0, Character: len(" * ")}110 want := completionList{IsIncomplete: false, Items: []completionItem{111 {112 CompletionItem: lsp.CompletionItem{113 Label: "concept1",114 Detail: "Concept",115 Kind: lsp.CIKFunction,116 TextEdit: &lsp.TextEdit{Range: lsp.Range{Start: position, End: position}, NewText: `concept1`},117 FilterText: `concept1`,118 Documentation: "concept1",119 },120 InsertTextFormat: snippet,121 },122 {123 CompletionItem: lsp.CompletionItem{124 Label: "Say <hello> to <gauge>",125 Detail: "Step",126 Kind: lsp.CIKFunction,127 TextEdit: &lsp.TextEdit{Range: lsp.Range{Start: position, End: position}, NewText: `Say "${1:hello}" to "${0:gauge}"`},128 FilterText: "Say <hello> to <gauge>",129 Documentation: "Say <hello> to <gauge>",130 },131 InsertTextFormat: snippet,132 },133 },134 }135 provider = &dummyInfoProvider{}136 b, _ := json.Marshal(lsp.TextDocumentPositionParams{TextDocument: lsp.TextDocumentIdentifier{URI: "uri"}, Position: position})137 p := json.RawMessage(b)138 responses := map[gm.Message_MessageType]interface{}{}139 responses[gm.Message_StepNamesResponse] = &gm.StepNamesResponse{Steps: []string{}}140 lRunner.runner = &runner.GrpcRunner{Client: &mockLspClient{responses: responses}, Timeout: time.Second * 30}141 got, err := completion(&jsonrpc2.Request{Params: &p})142 if err != nil {143 t.Fatalf("Expected error == nil in Completion, got %s", err.Error())144 }145 if !reflect.DeepEqual(got, want) {146 t.Errorf("Autocomplete request failed, got: `%v`, want: `%v`", got, want)147 }148}149func TestCompletionForLineWithText(t *testing.T) {150 openFilesCache = &files{cache: make(map[lsp.DocumentURI][]string)}151 openFilesCache.add("uri", " * step")152 position := lsp.Position{Line: 0, Character: len(` *`)}153 wantStartPos := lsp.Position{Line: position.Line, Character: len(` *`)}154 wantEndPos := lsp.Position{Line: position.Line, Character: len(` * step`)}155 want := completionList{IsIncomplete: false, Items: []completionItem{156 {157 CompletionItem: lsp.CompletionItem{158 Label: "concept1",159 Detail: "Concept",160 Kind: lsp.CIKFunction,161 TextEdit: &lsp.TextEdit{Range: lsp.Range{Start: wantStartPos, End: wantEndPos}, NewText: ` concept1`},162 FilterText: ` concept1`,163 Documentation: "concept1",164 },165 InsertTextFormat: snippet,166 },167 {168 CompletionItem: lsp.CompletionItem{169 Label: "Say <hello> to <gauge>",170 Detail: "Step",171 Kind: lsp.CIKFunction,172 TextEdit: &lsp.TextEdit{Range: lsp.Range{Start: wantStartPos, End: wantEndPos}, NewText: ` Say "${1:hello}" to "${0:gauge}"`},173 FilterText: " Say <hello> to <gauge>",174 Documentation: "Say <hello> to <gauge>",175 },176 InsertTextFormat: snippet,177 },178 },179 }180 provider = &dummyInfoProvider{}181 b, _ := json.Marshal(lsp.TextDocumentPositionParams{TextDocument: lsp.TextDocumentIdentifier{URI: "uri"}, Position: position})182 p := json.RawMessage(b)183 got, err := completion(&jsonrpc2.Request{Params: &p})184 if err != nil {185 t.Fatalf("Expected error == nil in Completion, got %s", err.Error())186 }187 if !reflect.DeepEqual(got, want) {188 t.Errorf("Autocomplete request failed, got: `%+v`, want: `%+v`", got, want)189 }190}191func TestCompletionInBetweenLine(t *testing.T) {192 openFilesCache = &files{cache: make(map[lsp.DocumentURI][]string)}193 openFilesCache.add("uri", "* step")194 position := lsp.Position{Line: 0, Character: len(`* s`)}195 wantStartPos := lsp.Position{Line: position.Line, Character: len(`* `)}196 wantEndPos := lsp.Position{Line: position.Line, Character: len(`* step`)}197 want := completionList{IsIncomplete: false, Items: []completionItem{198 {199 CompletionItem: lsp.CompletionItem{200 Label: "concept1",201 Detail: "Concept",202 Kind: lsp.CIKFunction,203 TextEdit: &lsp.TextEdit{Range: lsp.Range{Start: wantStartPos, End: wantEndPos}, NewText: `concept1`},204 FilterText: `concept1`,205 Documentation: "concept1",206 },207 InsertTextFormat: snippet,208 },209 {210 CompletionItem: lsp.CompletionItem{211 Label: "Say <hello> to <gauge>",212 Detail: "Step",213 Kind: lsp.CIKFunction,214 TextEdit: &lsp.TextEdit{Range: lsp.Range{Start: wantStartPos, End: wantEndPos}, NewText: `Say "${1:hello}" to "${0:gauge}"`},215 FilterText: "Say <hello> to <gauge>",216 Documentation: "Say <hello> to <gauge>",217 },218 InsertTextFormat: snippet,219 },220 },221 }222 provider = &dummyInfoProvider{}223 b, _ := json.Marshal(lsp.TextDocumentPositionParams{TextDocument: lsp.TextDocumentIdentifier{URI: "uri"}, Position: position})224 p := json.RawMessage(b)225 got, err := completion(&jsonrpc2.Request{Params: &p})226 if err != nil {227 t.Fatalf("Expected error == nil in Completion, got %s", err.Error())228 }229 if !reflect.DeepEqual(got, want) {230 t.Errorf("Autocomplete request failed, got: `%v`, want: `%v`", got, want)231 }232}233func TestCompletionInBetweenLineHavingParams(t *testing.T) {234 openFilesCache = &files{cache: make(map[lsp.DocumentURI][]string)}235 line := "*step with a <param> and more"236 openFilesCache.add("uri", line)237 position := lsp.Position{Line: 0, Character: len(`*step with a <param> and`)}238 wantStartPos := lsp.Position{Line: position.Line, Character: len(`*`)}239 wantEndPos := lsp.Position{Line: position.Line, Character: len(line)}240 want := completionList{IsIncomplete: false, Items: []completionItem{241 {242 CompletionItem: lsp.CompletionItem{243 Label: "concept1",244 Detail: "Concept",245 Kind: lsp.CIKFunction,246 TextEdit: &lsp.TextEdit{Range: lsp.Range{Start: wantStartPos, End: wantEndPos}, NewText: ` concept1`},247 FilterText: ` concept1`,248 Documentation: "concept1",249 },250 InsertTextFormat: snippet,251 },252 {253 CompletionItem: lsp.CompletionItem{254 Label: "Say <hello> to <gauge>",255 Detail: "Step",256 Kind: lsp.CIKFunction,257 TextEdit: &lsp.TextEdit{Range: lsp.Range{Start: wantStartPos, End: wantEndPos}, NewText: ` Say "${1:hello}" to "${0:gauge}"`},258 FilterText: " Say <param> to <gauge>",259 Documentation: "Say <hello> to <gauge>",260 },261 InsertTextFormat: snippet,262 },263 },264 }265 provider = &dummyInfoProvider{}266 b, _ := json.Marshal(lsp.TextDocumentPositionParams{TextDocument: lsp.TextDocumentIdentifier{URI: "uri"}, Position: position})267 p := json.RawMessage(b)268 got, err := completion(&jsonrpc2.Request{Params: &p})269 if err != nil {270 t.Fatalf("Expected error == nil in Completion, got %s", err.Error())271 }272 if !reflect.DeepEqual(got, want) {273 t.Errorf("Autocomplete request failed, got: `%+v`, want: `%+v`", got, want)274 }275}276func TestCompletionInBetweenLineHavingSpecialParams(t *testing.T) {277 openFilesCache = &files{cache: make(map[lsp.DocumentURI][]string)}278 line := "*step with a <file:test.txt> and more"279 openFilesCache.add("uri", line)280 position := lsp.Position{Line: 0, Character: len(`*step with a <file:test.txt>`)}281 wantStartPos := lsp.Position{Line: position.Line, Character: len(`*`)}282 wantEndPos := lsp.Position{Line: position.Line, Character: len(line)}283 want := completionList{IsIncomplete: false, Items: []completionItem{284 {285 CompletionItem: lsp.CompletionItem{286 Label: "concept1",287 Detail: "Concept",288 Kind: lsp.CIKFunction,289 TextEdit: &lsp.TextEdit{Range: lsp.Range{Start: wantStartPos, End: wantEndPos}, NewText: ` concept1`},290 FilterText: ` concept1`,291 Documentation: "concept1",292 },293 InsertTextFormat: snippet,294 },295 {296 CompletionItem: lsp.CompletionItem{297 Label: "Say <hello> to <gauge>",298 Detail: "Step",299 Kind: lsp.CIKFunction,300 TextEdit: &lsp.TextEdit{Range: lsp.Range{Start: wantStartPos, End: wantEndPos}, NewText: ` Say "${1:hello}" to "${0:gauge}"`},301 FilterText: " Say <file:test.txt> to <gauge>",302 Documentation: "Say <hello> to <gauge>",303 },304 InsertTextFormat: snippet,305 },306 },307 }308 provider = &dummyInfoProvider{}309 b, _ := json.Marshal(lsp.TextDocumentPositionParams{TextDocument: lsp.TextDocumentIdentifier{URI: "uri"}, Position: position})310 p := json.RawMessage(b)311 got, err := completion(&jsonrpc2.Request{Params: &p})312 if err != nil {313 t.Fatalf("Expected error == nil in Completion, got %s", err.Error())314 }315 if !reflect.DeepEqual(got, want) {316 t.Errorf("Autocomplete request failed, got: `%+v`, want: `%+v`", got, want)317 }318}319func TestParamCompletion(t *testing.T) {320 openFilesCache = &files{cache: make(map[lsp.DocumentURI][]string)}321 line := ` * step with a "param`322 openFilesCache.add("uri", line)323 position := lsp.Position{Line: 0, Character: len(` * step with a "pa`)}324 wantStartPos := lsp.Position{Line: position.Line, Character: len(` * step with a "`)}325 wantEndPos := lsp.Position{Line: position.Line, Character: len(` * step with a "param`)}326 want := completionList{IsIncomplete: false, Items: []completionItem{327 {328 CompletionItem: lsp.CompletionItem{329 Label: "hello",330 FilterText: "hello\"",331 Detail: "static",332 Kind: lsp.CIKVariable,333 TextEdit: &lsp.TextEdit{Range: lsp.Range{Start: wantStartPos, End: wantEndPos}, NewText: "hello\""},334 },335 InsertTextFormat: text,336 },337 {338 CompletionItem: lsp.CompletionItem{339 Label: "gauge",340 FilterText: "gauge\"",341 Detail: "static",342 Kind: lsp.CIKVariable,343 TextEdit: &lsp.TextEdit{Range: lsp.Range{Start: wantStartPos, End: wantEndPos}, NewText: "gauge\""},344 },345 InsertTextFormat: text,346 },347 },348 }349 provider = &dummyInfoProvider{}350 b, _ := json.Marshal(lsp.TextDocumentPositionParams{TextDocument: lsp.TextDocumentIdentifier{URI: "uri"}, Position: position})351 p := json.RawMessage(b)352 got, err := completion(&jsonrpc2.Request{Params: &p})353 if err != nil {354 t.Fatalf("Expected error == nil in Completion, got %s", err.Error())355 }356 if !reflect.DeepEqual(got, want) {357 t.Errorf("Autocomplete request failed, got: `%+v`, want: `%+v`", got, want)358 }359}360func TestCompletionWithError(t *testing.T) {361 p := json.RawMessage("sfdf")362 _, err := completion(&jsonrpc2.Request{Params: &p})363 if err == nil {364 t.Error("Expected error != nil in Completion, got nil")365 }366}367func TestCompletionForInvalidPosition(t *testing.T) {368 openFilesCache = &files{cache: make(map[lsp.DocumentURI][]string)}369 openFilesCache.add("uri", " * step")370 position := lsp.Position{Line: 1, Character: 2}371 want := completionList{IsIncomplete: false, Items: []completionItem{}}372 provider = &dummyInfoProvider{}373 b, _ := json.Marshal(lsp.TextDocumentPositionParams{TextDocument: lsp.TextDocumentIdentifier{URI: "uri"}, Position: position})374 p := json.RawMessage(b)375 got, err := completion(&jsonrpc2.Request{Params: &p})376 if err != nil {377 t.Fatalf("Expected error == nil in Completion, got %s", err.Error())378 }379 if !reflect.DeepEqual(got, want) {380 t.Errorf("Autocomplete request failed, got: `%+v`, want: `%+v`", got, want)381 }382}383func TestCompletionResolve(t *testing.T) {384 want := completionItem{CompletionItem: lsp.CompletionItem{Label: "step"}}385 b, _ := json.Marshal(want)386 p := json.RawMessage(b)387 got, err := resolveCompletion(&jsonrpc2.Request{Params: &p})388 if err != nil {389 t.Errorf("Expected error == nil in Completion resolve, got %s", err.Error())390 }391 if !reflect.DeepEqual(got, want) {392 t.Errorf("Autocomplete resolve request failed, got: `%v`, want: `%v`", got, want)393 }394}395func TestCompletionResolveWithError(t *testing.T) {396 p := json.RawMessage("sfdf")397 _, err := resolveCompletion(&jsonrpc2.Request{Params: &p})398 if err == nil {399 t.Error("Expected error != nil in Completion, got nil")400 }401}402func TestIsInStepCompletionAtStartOfLine(t *testing.T) {403 if !isStepCompletion("* ", 1) {404 t.Errorf("isStepCompletion not recognizing step context")405 }406}407func TestIsInStepCompletionAtEndOfLine(t *testing.T) {408 if !isStepCompletion("* Step without params", 21) {409 t.Errorf("isStepCompletion not recognizing step context")410 }411}412var paramContextTest = []struct {413 input string414 charPos int415 want bool416}{417 {418 input: `* Step with "static" and <dynamic> params`,419 charPos: len(`* Step with "`),420 want: true,421 },422 {423 input: `* Step with "static" and <dynamic> params`,424 charPos: len(`* Step with "static" an`),425 want: false,426 },427 {428 input: `* Step with "static" and <dynamic> params`,429 charPos: len(`* Step with "static" and <d`),430 want: true,431 },432}433func TestIsInParamContext(t *testing.T) {434 for _, test := range paramContextTest {435 got := inParameterContext(test.input, test.charPos)436 if test.want != got {437 t.Errorf("got : %v, want : %v", got, test.want)438 }439 }440}441func TestIsInTagsContext(t *testing.T) {442 specText := `Specification Heading443=====================444tags:foo, bar445Scenario Heading446----------------447tags: blah,abc448* step449`450 uri := lsp.DocumentURI("foo.spec")451 openFilesCache = &files{cache: make(map[lsp.DocumentURI][]string)}452 openFilesCache.add(uri, specText)453 got := isInTagsContext(2, uri)454 if !got {455 t.Errorf("want : %v\n Got : %v", true, got)456 }457}458func TestIsInTagsContextMultiline(t *testing.T) {459 specText := `Specification Heading460=====================461tags:foo, bar,462 abc463Scenario Heading464----------------465tags: blah,abc466* step467`468 uri := lsp.DocumentURI("foo.spec")469 openFilesCache = &files{cache: make(map[lsp.DocumentURI][]string)}470 openFilesCache.add(uri, specText)471 got := isInTagsContext(3, uri)472 if !got {473 t.Errorf("want : %v\n Got : %v", true, got)474 }475}476func TestNotInTagsContext(t *testing.T) {477 specText := `Specification Heading478=====================479tags:foo, bar480Scenario Heading481----------------482tags: blah,abc483* step484`485 uri := lsp.DocumentURI("foo.spec")486 openFilesCache = &files{cache: make(map[lsp.DocumentURI][]string)}487 openFilesCache.add(uri, specText)488 got := isInTagsContext(3, uri)489 if got {490 t.Errorf("want : %v\n Got : %v", false, got)491 }492}...
server.go
Source:server.go
...28 Steps(filterConcepts bool) []*gauge.Step29 AllSteps(filterConcepts bool) []*gauge.Step30 Concepts() []*gm.ConceptInfo31 Params(file string, argType gauge.ArgType) []gauge.StepArg32 Tags() []string33 SearchConceptDictionary(string) *gauge.Concept34 GetAvailableSpecDetails(specs []string) []*infoGatherer.SpecDetail35 GetSpecDirs() []string36}37var provider infoProvider38type lspHandler struct {39 jsonrpc2.Handler40}41type LangHandler struct {42}43type InitializeParams struct {44 RootPath string `json:"rootPath,omitempty"`45 Capabilities ClientCapabilities `json:"capabilities,omitempty"`46}...
Tags
Using AI Code Generation
1import (2func main() {3 if err != nil {4 fmt.Printf("Error getting client: %v5 os.Exit(1)6 }7 pods, err := kubeClient.Pods(api.NamespaceDefault).List(labels.Everything(), fields.Everything())8 if err != nil {9 fmt.Printf("Error getting pods: %v10 os.Exit(1)11 }12 for _, pod := range pods.Items {13 fmt.Printf("Pod %s has the following tags:14 for key, value := range pod.Labels {15 fmt.Printf("%s=%s16 }17 }18}19import (20func main() {21 if err != nil {22 fmt.Printf("Error getting client: %v23 os.Exit(1)24 }25 pods, err := kubeClient.Pods(api.NamespaceDefault).List(labels.Everything(), fields.Everything())26 if err != nil {27 fmt.Printf("Error getting pods: %v28 os.Exit(1)29 }30 for _, pod := range pods.Items {31 fmt.Printf("Pod %s has the following tags:
Tags
Using AI Code Generation
1import (2func TestTags(t *testing.T) {3 conn := redigomock.NewConn()4 gatherer := infoGatherer{conn}5 conn.Command("INFO", "KEYS").Expect("keyspace")6 conn.Command("INFO", "KEYS").Expect("db0:keys=0,expires=0,avg_ttl=0")7 tags := gatherer.Tags()8 assert.Equal(t, tags, map[string]string{"db0:keys": "0", "db0:expires": "0", "db0:avg_ttl": "0"})9 require.True(t, conn.Stats()["INFO"].Called)10 require.Equal(t, conn.Stats()["INFO"].Calls[0].Arguments, []interface{}{"KEYS"})11 require.Equal(t, conn.Stats()["INFO"].Calls[1].Arguments, []interface{}{"KEYS"})12}13import (14func TestTags(t *testing.T) {15 conn := redigomock.NewConn()16 gatherer := infoGatherer{conn}17 conn.Command("INFO", "KEYS").Expect("keyspace")18 conn.Command("INFO", "KEYS").Expect("db0:keys=0,expires=0,avg_ttl=0")19 tags := gatherer.Tags()20 assert.Equal(t, tags, map[string]string{"db0:keys": "0", "db0:expires": "0", "db0:avg_ttl": "0"})21 require.True(t, conn.Stats()["INFO"].Called)22 require.Equal(t, conn.Stats()["INFO"].Calls[0].Arguments, []interface{}{"KEYS"})23 require.Equal(t, conn.Stats()["INFO"].Calls[1].Arguments, []interface{}{"KEYS"})24}25import (
Tags
Using AI Code Generation
1import (2func main() {3 info.tags = []string{"tag1", "tag2", "tag3"}4 fmt.Println(info.Tags())5}6import (7func main() {8 info.tags = []string{"tag1", "tag2", "tag3"}9 fmt.Println(info.Tags())10}11import (12func main() {13 info.tags = []string{"tag1", "tag2", "tag3"}14 fmt.Println(info.Tags())15}16import (17func main() {18 info.tags = []string{"tag1", "tag2", "tag3"}19 fmt.Println(info.Tags())20}21import (22func main() {23 info.tags = []string{"tag1", "tag2", "tag3"}24 fmt.Println(info.Tags())25}26import (27func main() {28 info.tags = []string{"tag1", "tag2", "tag3"}29 fmt.Println(info.Tags())30}31import (32func main() {33 info.tags = []string{"tag1", "tag2", "tag3"}34 fmt.Println(info.Tags())35}36import (37func main() {38 info.tags = []string{"tag1", "tag2", "tag3"}39 fmt.Println(info.Tags())40}
Tags
Using AI Code Generation
1import (2type Win32_Process struct {3}4func main() {5 q := wmi.CreateQuery(&dst, "")6 fmt.Println(q)7 err := wmi.Query(q, &dst)8 if err != nil {9 fmt.Println(err)10 }11 for i := range dst {12 fmt.Println(dst[i].Name)13 }14}
Tags
Using AI Code Generation
1import (2func (i *infoGatherer) Tags() []string {3}4func main() {5 info := new(infoGatherer)6 tags := info.Tags()7 for _, tag := range tags {8 fmt.Println(tag)9 }10}11import (12func (i *infoGatherer) Tags() []string {13}14func main() {15 info := new(infoGatherer)16 tags := info.Tags()17 for _, tag := range tags {18 fmt.Println(tag)19 }20}21import (22func (i *infoGatherer) Tags() []string {23}24func main() {25 info := new(infoGatherer)26 tags := info.Tags()27 for _, tag := range tags {28 fmt.Println(tag)29 }30}31import (32func (i *infoGatherer) Tags() []string {33}34func main() {35 info := new(infoGatherer)36 tags := info.Tags()37 for _, tag := range tags {38 fmt.Println(tag)
Tags
Using AI Code Generation
1import (2func main() {3 dir, err := os.Getwd()4 if err != nil {5 fmt.Println("Error:", err)6 }7 ig := NewInfoGatherer()8 err = ig.Gather(dir)9 if err != nil {10 fmt.Println("Error:", err)11 }12 fmt.Printf("Gathered information about %s:\n", dir)13 fmt.Println("Size:", ig.Size())14 fmt.Println("Tags:", ig.Tags())15}16import (17func main() {18 dir, err := os.Getwd()19 if err != nil {20 fmt.Println("Error:", err)21 }22 ig := NewInfoGatherer()23 err = ig.Gather(dir)24 if err != nil {25 fmt.Println("Error:", err)26 }27 fmt.Printf("Gathered information about %s:\n", dir)28 fmt.Println("Size:", ig.Size())29 fmt.Println("Tags:", ig.Tags())30}31import (32func main() {33 dir, err := os.Getwd()34 if err != nil {35 fmt.Println("Error:", err)36 }37 ig := NewInfoGatherer()38 err = ig.Gather(dir)39 if err != nil {40 fmt.Println("Error:", err)41 }42 fmt.Printf("Gathered information about %s:\n", dir)43 fmt.Println("Size:", ig.Size())44 fmt.Println("Tags:", ig
Tags
Using AI Code Generation
1import "fmt"2import "github.com/ramkrishna-sdm/infoGatherer"3func main() {4 i = infoGatherer.InfoGatherer{}5 tags := i.Tags()6 fmt.Println(tags)7}
Tags
Using AI Code Generation
1import (2func main() {3 infoGatherer := yq.NewYamlInfoGatherer([]byte(yaml))4 tags := infoGatherer.Tags()5 fmt.Println(tags)6}7import (8func main() {9 infoGatherer := yq.NewYamlInfoGatherer([]byte(yaml))10 tags := infoGatherer.Tags()11 fmt.Println(tags[0]["a"])12}13import (14func main() {15 infoGatherer := yq.NewYamlInfoGatherer([]byte(yaml))16 tags := infoGatherer.Tags()17 fmt.Println(tags[0]["a"]["b"])18}19import (20func main() {
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!