diff --git a/e2e/src/posa.e2e-spec.ts b/e2e/src/posa.e2e-spec.ts new file mode 100644 index 0000000..949f5d5 --- /dev/null +++ b/e2e/src/posa.e2e-spec.ts @@ -0,0 +1,27 @@ +import {browser} from 'protractor'; +import {PosaPage} from './posa.po'; + +describe('with position:absolute container', () => { + let page: PosaPage; + + beforeEach(() => { + page = new PosaPage(); + page.navigateToDev(); + }); + + + it('should recognize sticky ', async () => { + page.navigateToDev(); + await browser.executeScript('window.scrollTo(0,501);'); + const hasStickyClass = await hasClass(page.getStickyElement(), 'is-sticky'); + expect(hasStickyClass).toBe(true); + }); + + +}); + +// via https://stackoverflow.com/questions/20268128/how-to-test-if-an-element-has-class-using-protractor +async function hasClass(element, cls) { + const classes = await element.getAttribute('class'); + return classes.split(' ').indexOf(cls) !== -1; +} diff --git a/e2e/src/posa.po.ts b/e2e/src/posa.po.ts new file mode 100644 index 0000000..de3c10c --- /dev/null +++ b/e2e/src/posa.po.ts @@ -0,0 +1,25 @@ +import {browser, by, element} from 'protractor'; + +export class PosaPage { + + + constructor() { + const width = 1200; + const height = 900; + browser.driver.manage().window().setSize(width, height); + } + + navigateToDev() { + return browser.get('/posa'); + } + + + getStickyElement() { + return element(by.css('.some-thing-sticky')); + } + + getEnableButton() { + return element(by.css('#enable-btn')); + } +} + diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 23ca98b..e6b0f2b 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -3,10 +3,12 @@ import {RouterModule, Routes} from '@angular/router'; import {HomeComponent} from './home/home.component'; import {DevComponent} from './dev/dev.component'; +import {PosaContainerComponent} from './test-cases/posa-container/posa-container.component'; const routes: Routes = [ {path: '', component: HomeComponent}, - {path: 'dev', component: DevComponent} + {path: 'dev', component: DevComponent}, + {path: 'posa', component: PosaContainerComponent}, ]; @NgModule({ diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 4d9400b..9faf68b 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -7,13 +7,15 @@ import {DevComponent} from './dev/dev.component'; import {HomeComponent} from './home/home.component'; import {AppRoutingModule} from './app-routing.module'; import {AngularStickyThingsModule} from '../../projects/angular-sticky-things/src/lib/angular-sticky-things.module'; +import {PosaContainerComponent} from './test-cases/posa-container/posa-container.component'; @NgModule({ declarations: [ AppComponent, InfoComponent, DevComponent, - HomeComponent + HomeComponent, + PosaContainerComponent ], imports: [ BrowserModule, diff --git a/src/app/test-cases/posa-container/posa-container.component.html b/src/app/test-cases/posa-container/posa-container.component.html new file mode 100644 index 0000000..3814168 --- /dev/null +++ b/src/app/test-cases/posa-container/posa-container.component.html @@ -0,0 +1,19 @@ +
+ I'm special, since the containing div scrolls and not the body. +
+ + +