app/todo/todo.component.po.js
function () {
    this.el = element(by.tagName('todo'));
    this.available = function() {
        return this.el.element(by.binding('$ctrl.todos.length')).getText();
    };
    this.uncompleted = function() {
        return this.el.element(by.binding('$ctrl.uncompleted()')).getText();
    };
    this.todos = function() {
        return this.el.all(by.repeater('todo in $ctrl.todos'));
    };
    this.todo = function (index) {
        return new Todo(this.todos().get(index));
    };
    this.error = function() {
        return this.el.element(by.binding('$ctrl.error')).getText();
    };

    // actions
    this.add = function (description) {
        return this.el.element(by.model('$ctrl.description')).clear().sendKeys(description, protractor.Key.ENTER);
    };
    this.archive = function() {
        return this.el.element(by.css('[ng-click="$ctrl.archive()"]')).click();
    };
}
function () {
    this.el = element(by.tagName('todo'));
    this.available = function() {
        return this.el.element(by.binding('$ctrl.todos.length')).getText();
    };
    this.uncompleted = function() {
        return this.el.element(by.binding('$ctrl.uncompleted()')).getText();
    };
    this.todos = function() {
        return this.el.all(by.repeater('todo in $ctrl.todos'));
    };
    this.todo = function (index) {
        return new Todo(this.todos().get(index));
    };
    this.error = function() {
        return this.el.element(by.binding('$ctrl.error')).getText();
    };

    // actions
    this.add = function (description) {
        return this.el.element(by.model('$ctrl.description')).clear().sendKeys(description, protractor.Key.ENTER);
    };
    this.archive = function() {
        return this.el.element(by.css('[ng-click="$ctrl.archive()"]')).click();
    };
}
function ( ) { this . el = element ( by . tagName ( 'todo' ) ) ; this . available = function ( ) { return this . el . element ( by . binding ( '$ctrl.todos.length' ) ) . getText ( ) ; } ; this . uncompleted = function ( ) { return this . el . element ( by . binding ( '$ctrl.uncompleted()' ) ) . getText ( ) ; } ; this . todos = function ( ) { return this . el . all ( by . repeater ( 'todo in $ctrl.todos' ) ) ; } ; this . todo = function ( index ) { return new Todo ( this . todos ( ) . get ( index ) ) ; } ; this . error = function ( ) { return this . el . element ( by . binding ( '$ctrl.error' ) ) . getText ( ) ; } ; // actions this . add = function ( description ) { return this . el . element ( by . model ( '$ctrl.description' ) ) . clear ( ) . sendKeys ( description , protractor . Key . ENTER ) ; } ; this . archive = function ( ) { return this . el . element ( by . css ( '[ng-click="$ctrl.archive()"]' ) ) . click ( ) ; } ; }
PageObject is an API for the Todo.
@constructor
PageObject is an API for the Todo .