Best Syzkaller code snippet using main.initMocks
content_resized_test.go
Source:content_resized_test.go
...26 }27 tests := []struct {28 name string29 args args30 initMocks func(t *testing.T, repository *mocks.ARepositoryAdapter, store *mocks.StoreAdapter, cache *mocks.CacheAdapter, asyncJob *mocks.AsyncJobAdapter, resizer *mocks.ResizerAdapter)31 wantContent []byte32 wantType string33 wantErr assert.ErrorAssertionFunc34 }{35 {36 name: "it should resize the image and store the results when the cache is empty",37 args: args{owner, mediaId, 1440, 0},38 initMocks: func(t *testing.T, repository *mocks.ARepositoryAdapter, store *mocks.StoreAdapter, cache *mocks.CacheAdapter, asyncJob *mocks.AsyncJobAdapter, resizer *mocks.ResizerAdapter) {39 cache.On("Get", "w=1440"+cacheIdSuffix).Once().Return(nil, 0, "", archive.NotFoundError)40 fullContentReader := io.NopCloser(bytes.NewReader(fullContent))41 repository.On("FindById", owner, mediaId).Once().Return("main-store-key-01", nil)42 store.On("Download", "main-store-key-01").Once().Return(fullContentReader, nil)43 resizer.On("ResizeImage", fullContentReader, 1440, false).Once().Return(resizedContent, mediaType, nil)44 cache.On("Put", "w=1440"+cacheIdSuffix, mediaType, mock.Anything).Once().Return(func(id string, mediaType string, reader io.Reader) error {45 content, err := io.ReadAll(reader)46 if assert.NoError(t, err) {47 assert.Equal(t, resizedContent, content)48 }49 return nil50 })51 asyncJob.On("WarmUpCacheByFolder", owner, "main-store-key-01", 1440).Once().Return(nil)52 },53 wantContent: resizedContent,54 wantType: mediaType,55 wantErr: assert.NoError,56 },57 {58 name: "it should use cached image if on the right size",59 args: args{owner, mediaId, 1440, 0},60 initMocks: func(t *testing.T, repository *mocks.ARepositoryAdapter, store *mocks.StoreAdapter, cache *mocks.CacheAdapter, asyncJob *mocks.AsyncJobAdapter, resizer *mocks.ResizerAdapter) {61 cache.On("Get", "w=1440"+cacheIdSuffix).Once().Return(io.NopCloser(bytes.NewReader(resizedContent)), 42, mediaType, nil)62 },63 wantContent: resizedContent,64 wantType: mediaType,65 wantErr: assert.NoError,66 },67 {68 name: "it should store a miniature image in the cache and return a smaller one",69 args: args{owner, mediaId, 180, 0},70 initMocks: func(t *testing.T, repository *mocks.ARepositoryAdapter, store *mocks.StoreAdapter, cache *mocks.CacheAdapter, asyncJob *mocks.AsyncJobAdapter, resizer *mocks.ResizerAdapter) {71 cache.On("Get", "miniatures"+cacheIdSuffix).Once().Return(nil, 0, "", archive.NotFoundError)72 fullContentReader := io.NopCloser(bytes.NewReader(fullContent))73 repository.On("FindById", owner, mediaId).Once().Return("main-store-key-01", nil)74 store.On("Download", "main-store-key-01").Once().Return(fullContentReader, nil)75 resizer.On("ResizeImage", fullContentReader, archive.MiniatureCachedWidth, false).Once().Return(resizedContent, mediaType, nil)76 cache.On("Put", "miniatures"+cacheIdSuffix, mediaType, mock.Anything).Once().Return(nil)77 resizer.On("ResizeImage", mock.Anything, 180, true).Once().Return(miniContent, mediaType, func(reader io.Reader, width int, fast bool) error {78 content, err := io.ReadAll(reader)79 if assert.NoError(t, err) {80 assert.Equal(t, resizedContent, content)81 }82 return nil83 })84 asyncJob.On("WarmUpCacheByFolder", owner, "main-store-key-01", archive.MiniatureCachedWidth).Once().Return(nil)85 },86 wantContent: miniContent,87 wantType: mediaType,88 wantErr: assert.NoError,89 },90 {91 name: "it should get the miniature image from the cache and return a smaller one",92 args: args{owner, mediaId, 180, 0},93 initMocks: func(t *testing.T, repository *mocks.ARepositoryAdapter, store *mocks.StoreAdapter, cache *mocks.CacheAdapter, asyncJob *mocks.AsyncJobAdapter, resizer *mocks.ResizerAdapter) {94 resizedContentReader := io.NopCloser(bytes.NewReader(resizedContent))95 cache.On("Get", "miniatures"+cacheIdSuffix).Once().Return(resizedContentReader, 42, mediaType, nil)96 resizer.On("ResizeImage", resizedContentReader, 180, true).Once().Return(miniContent, mediaType, nil)97 },98 wantContent: miniContent,99 wantType: mediaType,100 wantErr: assert.NoError,101 },102 {103 name: "it should use the appropriate cached width and resize after",104 args: args{owner, mediaId, 1024, 0},105 initMocks: func(t *testing.T, repository *mocks.ARepositoryAdapter, store *mocks.StoreAdapter, cache *mocks.CacheAdapter, asyncJob *mocks.AsyncJobAdapter, resizer *mocks.ResizerAdapter) {106 resizedContentReader := io.NopCloser(bytes.NewReader(resizedContent))107 cache.On("Get", "w=1440"+cacheIdSuffix).Once().Return(resizedContentReader, 42, mediaType, nil)108 resizer.On("ResizeImage", resizedContentReader, 1024, true).Once().Return(miniContent, mediaType, nil)109 },110 wantContent: miniContent,111 wantType: mediaType,112 wantErr: assert.NoError,113 },114 {115 name: "it should return an overflow error when the image is too big after having storing it",116 args: args{owner, mediaId, archive.MediumQualityCachedWidth, 8},117 initMocks: func(t *testing.T, repository *mocks.ARepositoryAdapter, store *mocks.StoreAdapter, cache *mocks.CacheAdapter, asyncJob *mocks.AsyncJobAdapter, resizer *mocks.ResizerAdapter) {118 cacheKey := fmt.Sprintf("w=%d%s", archive.MediumQualityCachedWidth, cacheIdSuffix)119 cache.On("Get", cacheKey).Once().Return(nil, 0, "", archive.NotFoundError)120 fullContentReader := io.NopCloser(bytes.NewReader(fullContent))121 repository.On("FindById", owner, mediaId).Once().Return("main-store-key-01", nil)122 store.On("Download", "main-store-key-01").Once().Return(fullContentReader, nil)123 resizer.On("ResizeImage", fullContentReader, archive.MediumQualityCachedWidth, false).Once().Return(resizedContent, mediaType, nil)124 cache.On("Put", cacheKey, mediaType, mock.Anything).Once().Return(nil)125 asyncJob.On("WarmUpCacheByFolder", owner, "main-store-key-01", archive.MediumQualityCachedWidth).Once().Return(nil)126 },127 wantContent: nil,128 wantType: mediaType,129 wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {130 return assert.Equal(t, err, archive.MediaOverflowError, i)131 },132 },133 {134 name: "it should return an overflow error when the cached image is too big",135 args: args{owner, mediaId, archive.MediumQualityCachedWidth, 41},136 initMocks: func(t *testing.T, repository *mocks.ARepositoryAdapter, store *mocks.StoreAdapter, cache *mocks.CacheAdapter, asyncJob *mocks.AsyncJobAdapter, resizer *mocks.ResizerAdapter) {137 cacheKey := fmt.Sprintf("w=%d%s", archive.MediumQualityCachedWidth, cacheIdSuffix)138 cache.On("Get", cacheKey).Once().Return(unreadableReader, 42, mediaType, nil)139 },140 wantContent: nil,141 wantType: mediaType,142 wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {143 return assert.Equal(t, archive.MediaOverflowError, err, i)144 },145 },146 {147 name: "it should return an overflow error when the resized image is too big",148 args: args{owner, mediaId, 1024, 8},149 initMocks: func(t *testing.T, repository *mocks.ARepositoryAdapter, store *mocks.StoreAdapter, cache *mocks.CacheAdapter, asyncJob *mocks.AsyncJobAdapter, resizer *mocks.ResizerAdapter) {150 resizedContentReader := io.NopCloser(bytes.NewReader(resizedContent))151 cache.On("Get", "w=1440"+cacheIdSuffix).Once().Return(resizedContentReader, 40, mediaType, nil)152 resizer.On("ResizeImage", resizedContentReader, 1024, true).Once().Return(miniContent, mediaType, nil)153 },154 wantContent: nil,155 wantType: mediaType,156 wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {157 return assert.Equal(t, archive.MediaOverflowError, err, i)158 },159 },160 {161 name: "it should return the resized image even if the cached version is too big",162 args: args{owner, mediaId, 1024, 16},163 initMocks: func(t *testing.T, repository *mocks.ARepositoryAdapter, store *mocks.StoreAdapter, cache *mocks.CacheAdapter, asyncJob *mocks.AsyncJobAdapter, resizer *mocks.ResizerAdapter) {164 resizedContentReader := io.NopCloser(bytes.NewReader(resizedContent))165 cache.On("Get", "w=1440"+cacheIdSuffix).Once().Return(resizedContentReader, 40, mediaType, nil)166 resizer.On("ResizeImage", resizedContentReader, 1024, true).Once().Return(miniContent, mediaType, nil)167 },168 wantContent: miniContent,169 wantType: mediaType,170 wantErr: assert.NoError,171 },172 {173 name: "it should return not found if the image is unknown",174 args: args{owner, mediaId, 1440, 8},175 initMocks: func(t *testing.T, repository *mocks.ARepositoryAdapter, store *mocks.StoreAdapter, cache *mocks.CacheAdapter, asyncJob *mocks.AsyncJobAdapter, resizer *mocks.ResizerAdapter) {176 cache.On("Get", "w=1440"+cacheIdSuffix).Once().Return(nil, 0, "", archive.NotFoundError)177 repository.On("FindById", owner, mediaId).Once().Return("", archive.NotFoundError)178 },179 wantContent: nil,180 wantType: "",181 wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {182 return assert.Equal(t, archive.NotFoundError, err, i)183 },184 },185 {186 name: "it should reject width request higher than max cached resolution",187 args: args{owner, mediaId, 151000, 16},188 initMocks: func(t *testing.T, repository *mocks.ARepositoryAdapter, store *mocks.StoreAdapter, cache *mocks.CacheAdapter, asyncJob *mocks.AsyncJobAdapter, resizer *mocks.ResizerAdapter) {189 },190 wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {191 return assert.Error(t, err, i)192 },193 },194 }195 for _, tt := range tests {196 t.Run(tt.name, func(t *testing.T) {197 repository := mocks.NewARepositoryAdapter(t)198 store := mocks.NewStoreAdapter(t)199 cache := mocks.NewCacheAdapter(t)200 resizer := mocks.NewResizerAdapter(t)201 asyncJob := mocks.NewAsyncJobAdapter(t)202 tt.initMocks(t, repository, store, cache, asyncJob, resizer)203 archive.ResizerPort = resizer204 archive.Init(repository, store, cache, asyncJob)205 archive.CacheableWidths = []int{archive.MediumQualityCachedWidth, 1440, archive.MiniatureCachedWidth}206 gotContent, gotMediaType, err := archive.GetResizedImage(tt.args.owner, tt.args.mediaId, tt.args.width, tt.args.maxBytes)207 if !tt.wantErr(t, err, fmt.Sprintf("GetResizedImage(%v, %v, %v, %v)", tt.args.owner, tt.args.mediaId, tt.args.width, tt.args.maxBytes)) {208 return209 }210 assert.Equal(t, tt.wantContent, gotContent)211 assert.Equal(t, tt.wantType, gotMediaType)212 })213 }214}215func TestGetResizedImageURL(t *testing.T) {216 t.Run("it should pass-through the request to the cache", func(t *testing.T) {...
users_login_test.go
Source:users_login_test.go
...22 "github.com/pkg/errors"23 r "github.com/stretchr/testify/require"24)25func TestUsersFinishLoginBadMailboxPassword(t *testing.T) {26 m := initMocks(t)27 defer m.ctrl.Finish()28 // Init users with no user from keychain.29 m.credentialsStore.EXPECT().List().Return([]string{}, nil)30 // Set up mocks for FinishLogin.31 m.pmapiClient.EXPECT().AuthSalt(gomock.Any()).Return("", nil)32 m.pmapiClient.EXPECT().Unlock(gomock.Any(), testCredentials.Secret.MailboxPassword).Return(errors.New("no keys could be unlocked"))33 checkUsersFinishLogin(t, m, testAuthRefresh, testCredentials.Secret.MailboxPassword, "", ErrWrongMailboxPassword, false)34}35func TestUsersFinishLoginNewUser(t *testing.T) {36 m := initMocks(t)37 defer m.ctrl.Finish()38 // Init users with no user from keychain.39 m.credentialsStore.EXPECT().List().Return([]string{}, nil)40 mockAddingConnectedUser(t, m)41 mockEventLoopNoAction(m)42 checkUsersFinishLogin(t, m, testAuthRefresh, testCredentials.Secret.MailboxPassword, testCredentials.UserID, nil, true)43}44func TestUsersFinishLoginExistingDisconnectedUser(t *testing.T) {45 m := initMocks(t)46 defer m.ctrl.Finish()47 // Mock loading disconnected user.48 m.credentialsStore.EXPECT().List().Return([]string{testCredentialsDisconnected.UserID}, nil)49 mockLoadingDisconnectedUser(m, testCredentialsDisconnected)50 // Mock process of FinishLogin of already added user.51 gomock.InOrder(52 m.pmapiClient.EXPECT().AuthSalt(gomock.Any()).Return("", nil),53 m.pmapiClient.EXPECT().Unlock(gomock.Any(), testCredentials.Secret.MailboxPassword).Return(nil),54 m.pmapiClient.EXPECT().CurrentUser(gomock.Any()).Return(testPMAPIUserDisconnected, nil),55 m.credentialsStore.EXPECT().UpdateToken(testCredentialsDisconnected.UserID, testAuthRefresh.UID, testAuthRefresh.RefreshToken).Return(testCredentials, nil),56 m.credentialsStore.EXPECT().UpdatePassword(testCredentialsDisconnected.UserID, testCredentials.Secret.MailboxPassword).Return(testCredentials, nil),57 )58 mockInitConnectedUser(t, m)59 mockEventLoopNoAction(m)60 authRefresh := &pmapi.Auth{61 UserID: testCredentialsDisconnected.UserID,62 AuthRefresh: pmapi.AuthRefresh{63 UID: "uid",64 AccessToken: "acc",65 RefreshToken: "ref",66 },67 }68 checkUsersFinishLogin(t, m, authRefresh, testCredentials.Secret.MailboxPassword, testCredentialsDisconnected.UserID, nil, false)69}70func TestUsersFinishLoginConnectedUser(t *testing.T) {71 m := initMocks(t)72 defer m.ctrl.Finish()73 // Mock loading connected user.74 m.credentialsStore.EXPECT().List().Return([]string{testCredentials.UserID}, nil)75 mockLoadingConnectedUser(t, m, testCredentials)76 mockEventLoopNoAction(m)77 // Mock process of FinishLogin of already connected user.78 gomock.InOrder(79 m.pmapiClient.EXPECT().AuthSalt(gomock.Any()).Return("", nil),80 m.pmapiClient.EXPECT().Unlock(gomock.Any(), testCredentials.Secret.MailboxPassword).Return(nil),81 m.pmapiClient.EXPECT().CurrentUser(gomock.Any()).Return(testPMAPIUser, nil),82 m.pmapiClient.EXPECT().AuthDelete(gomock.Any()).Return(nil),83 )84 users := testNewUsers(t, m)85 defer cleanUpUsersData(users)...
user_credentials_test.go
Source:user_credentials_test.go
...24 "github.com/pkg/errors"25 r "github.com/stretchr/testify/require"26)27func TestUpdateUser(t *testing.T) {28 m := initMocks(t)29 defer m.ctrl.Finish()30 user := testNewUser(t, m)31 defer cleanUpUserData(user)32 gomock.InOrder(33 m.pmapiClient.EXPECT().UpdateUser(gomock.Any()).Return(testPMAPIUser, nil),34 m.pmapiClient.EXPECT().ReloadKeys(gomock.Any(), testCredentials.Secret.MailboxPassword).Return(nil),35 m.pmapiClient.EXPECT().Addresses().Return([]*pmapi.Address{testPMAPIAddress}),36 m.credentialsStore.EXPECT().UpdateEmails("user", []string{testPMAPIAddress.Email}).Return(testCredentials, nil),37 )38 r.NoError(t, user.UpdateUser(context.Background()))39}40func TestLogoutUser(t *testing.T) {41 m := initMocks(t)42 defer m.ctrl.Finish()43 user := testNewUser(t, m)44 defer cleanUpUserData(user)45 gomock.InOrder(46 m.pmapiClient.EXPECT().AuthDelete(gomock.Any()).Return(nil),47 m.credentialsStore.EXPECT().Logout("user").Return(testCredentialsDisconnected, nil),48 m.eventListener.EXPECT().Emit(events.CloseConnectionEvent, "user@pm.me"),49 )50 err := user.Logout()51 r.NoError(t, err)52}53func TestLogoutUserFailsLogout(t *testing.T) {54 m := initMocks(t)55 defer m.ctrl.Finish()56 user := testNewUser(t, m)57 defer cleanUpUserData(user)58 gomock.InOrder(59 m.pmapiClient.EXPECT().AuthDelete(gomock.Any()).Return(nil),60 m.credentialsStore.EXPECT().Logout("user").Return(nil, errors.New("logout failed")),61 m.credentialsStore.EXPECT().Delete("user").Return(nil),62 m.eventListener.EXPECT().Emit(events.CloseConnectionEvent, "user@pm.me"),63 )64 err := user.Logout()65 r.NoError(t, err)66}67func TestCheckBridgeLogin(t *testing.T) {68 m := initMocks(t)69 defer m.ctrl.Finish()70 user := testNewUser(t, m)71 defer cleanUpUserData(user)72 err := user.UnlockCredentials("main", testMainKeyString)73 r.NoError(t, err)74}75func TestCheckBridgeLoginLoggedOut(t *testing.T) {76 m := initMocks(t)77 defer m.ctrl.Finish()78 gomock.InOrder(79 // Mock init of user.80 m.credentialsStore.EXPECT().Get("user").Return(testCredentialsDisconnected, nil),81 m.pmapiClient.EXPECT().AddAuthRefreshHandler(gomock.Any()),82 m.pmapiClient.EXPECT().ListLabels(gomock.Any()).Return(nil, pmapi.ErrUnauthorized),83 m.pmapiClient.EXPECT().Addresses().Return(nil),84 )85 user, err := newUser("user", m.eventListener, m.credentialsStore, m.storeMaker, m.clientManager)86 r.NoError(t, err)87 err = user.connect(m.pmapiClient)88 r.Error(t, err)89 defer cleanUpUserData(user)90 err = user.CheckCredentials("main", "asdf")91 r.Equal(t, ErrLoggedOutUser, err)92}93func TestCheckBridgeLoginBadPassword(t *testing.T) {94 m := initMocks(t)95 defer m.ctrl.Finish()96 user := testNewUser(t, m)97 defer cleanUpUserData(user)98 err := user.UnlockCredentials("main", "wrong!")99 r.EqualError(t, err, "Bridge credentials checking failed")100}...
initMocks
Using AI Code Generation
1cannot use initMocks() (type string) as type func() in return argument2import (3func main() {4 fmt.Println("Welcome to the Go Vending Machine!")5 fmt.Println("Please enter the amount of money you have (in cents):")6 _, err := fmt.Scanf("%d", &money)7 if err != nil {8 fmt.Println(err)9 os.Exit(1)10 }11 fmt.Println("You have entered", money, "cents.")12 fmt.Println("Please enter the price of the item you would like to purchase (in cents):")13 _, err = fmt.Scanf("%d", &price)14 if err != nil {15 fmt.Println(err)16 os.Exit(1)17 }18 fmt.Println("You have entered", price, "cents.")19 if money < price {20 fmt.Println("You have not entered enough money.")21 fmt.Println("Please enter more money.")22 _, err = fmt.Scanf("%d", &extra)23 if err != nil {24 fmt.Println(err)25 os.Exit(1)26 }27 fmt.Println("You have entered", money, "cents.")28 }29 if money == price {30 fmt.Println("You have entered exactly the right amount of money.")31 fmt.Println("Enjoy your item!")32 }33 if money > price {
initMocks
Using AI Code Generation
1import (2func TestMain(t *testing.T) {3 initMocks()4 fmt.Println("Hello world")5}6import (7func TestMain(t *testing.T) {8 fmt.Println("Hello world")9}10import (11func initMocks() {12 fmt.Println("Init Mocks")13}14func TestMain(t *testing.T) {15 fmt.Println("Hello world")16}
initMocks
Using AI Code Generation
1func TestMain(m *testing.M) {2 main.initMocks()3 m.Run()4}5func TestMain(m *testing.M) {6 main.initMocks()7 m.Run()8}9package.Function()10func TestFunction(t *testing.T) {11 package.MockFunction = func() {12 fmt.Println("Mocked function")13 }14 package.Function()15}16panic(0x11b9ae0, 0xc42000e0f0)17github.com/username/package.TestFunction(0xc42007a0f0)18testing.tRunner(0xc42007a0f0, 0x11d4c30)
initMocks
Using AI Code Generation
1import (2func main() {3 mock.InitMocks()4 fmt.Println(mock.GetMock())5}6import (7func main() {8 mock.InitMocks()9 fmt.Println(mock.GetMock())10}11import (12func main() {13 mock.InitMocks()14 fmt.Println(mock.GetMock())15}16import (17func main() {18 mock.InitMocks()19 fmt.Println(mock.GetMock())20}21import (22func main() {23 mock.InitMocks()24 fmt.Println(mock.GetMock())25}26import (27func main() {28 mock.InitMocks()29 fmt.Println(mock.GetMock())30}31import (32func main() {33 mock.InitMocks()34 fmt.Println(mock.GetMock())35}36import (37func main() {38 mock.InitMocks()39 fmt.Println(mock.GetMock())40}41import (42func main() {43 mock.InitMocks()44 fmt.Println(mock.GetMock())45}46import (47func main() {48 mock.InitMocks()49 fmt.Println(mock.GetMock())50}51import (52func main() {53 mock.InitMocks()54 fmt.Println(mock.GetMock())
initMocks
Using AI Code Generation
1import (2func TestMain(t *testing.T) {3 fmt.Println("TestMain")4 mylib.InitMocks()5}6import (7func TestMain(t *testing.T) {8 fmt.Println("TestMain")9 mylib.InitMocks()10}11import (12func TestMain(t *testing.T) {13 fmt.Println("TestMain")14 mylib.InitMocks()15}16import (17func TestMain(t *testing.T) {18 fmt.Println("TestMain")19 mylib.InitMocks()20}21import (22func TestMain(t *testing.T) {23 fmt.Println("TestMain")24 mylib.InitMocks()25}26import (27func TestMain(t *testing.T) {28 fmt.Println("TestMain")29 mylib.InitMocks()30}31import (32func TestMain(t *testing.T) {33 fmt.Println("TestMain")34 mylib.InitMocks()35}36import (37func TestMain(t *testing.T) {38 fmt.Println("TestMain")39 mylib.InitMocks()40}41import (42func TestMain(t *testing.T) {43 fmt.Println("TestMain")44 mylib.InitMocks()45}
initMocks
Using AI Code Generation
1func main() {2 initMocks()3 result := getMockedData()4 fmt.Println(result)5}6func main() {7 initMocks()8 result := getMockedData()9 fmt.Println(result)10}11func main() {12 initMocks()13 result := getMockedData()14 fmt.Println(result)15}16func main() {17 initMocks()18 result := getMockedData()19 fmt.Println(result)20}21func main() {22 initMocks()23 result := getMockedData()24 fmt.Println(result)25}26func main() {27 initMocks()28 result := getMockedData()29 fmt.Println(result)30}31func main() {32 initMocks()33 result := getMockedData()34 fmt.Println(result)35}36func main() {37 initMocks()38 result := getMockedData()39 fmt.Println(result)40}41func main() {42 initMocks()43 result := getMockedData()44 fmt.Println(result)45}46func 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!!