Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Accessing localStorage in Protractor test for AngularJS application

I am writing some tests to verify that input data is being stored in local storage correctly, how can I access localStorage from within the protractor test?

...
describe('vgPersist', function() {
  it('Should save input data in local storage until form submitted', function() {
    // Prepare Object and Open browser
    var addOns = new AddOns();
    addOns.get();

    -> Clear localStorage
    -> Get from localStorage

How do you use executeScript? And could I get data from an executeScript?

like image 775
Zack Argyle Avatar asked Feb 22 '14 21:02

Zack Argyle


1 Answers

To get an item from local storage use window.localStorage.getItem() through executeScript():

var value = browser.executeScript("return window.localStorage.getItem('key');");
expect(value).toEqual(expectedValue);

To clear local storage call clear():

browser.executeScript("window.localStorage.clear();");

We can also have this helper object/wrapper around the local storage for convenience:

"use strict";

var LocalStorage = function () {
    this.getValue = function (key) {
        return browser.executeScript("return window.localStorage.getItem('" + key + "');");
    };

    this.get = function () {
        browser.executeScript("return window.localStorage;");
    };

    this.clear = function () {
        browser.executeScript("return window.localStorage.clear();");
    };
};

module.exports = new LocalStorage();
like image 73
alecxe Avatar answered Oct 11 '22 01:10

alecxe