Skip to content

Commit

Permalink
Move common static files handling to abstract render
Browse files Browse the repository at this point in the history
  • Loading branch information
VadimKovalenkoSNF committed Oct 16, 2023
1 parent bdd0847 commit d412ee4
Show file tree
Hide file tree
Showing 8 changed files with 69 additions and 69 deletions.
12 changes: 7 additions & 5 deletions src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,14 @@ const config = {
},

output: {
// CSS resources added by Kiwix
cssResources: ['style', 'content.parsoid', 'inserted_style'],
mainPageCssResources: ['mobile_main_page'],
wikimediaMobileCssResources: ['wm_mobile_override_style'],
// CSS and JS resources added by Kiwix
cssResourcesCommon: ['style', 'mobile_main_page'],
jsResourcesCommon: ['script', 'masonry.min', 'article_list_home', 'images_loaded.min'],

cssResources: ['content.parsoid', 'inserted_style'],
jsResources: ['../node_modules/details-element-polyfill/dist/details-element-polyfill'],

jsResources: ['script', 'masonry.min', 'article_list_home', 'images_loaded.min', '../node_modules/details-element-polyfill/dist/details-element-polyfill'],
wikimediaMobileCssResources: ['wm_mobile_override_style'],
mwMobileJsResources: ['wm_mobile_override_script'],

// JS/CSS resources to be imported from MediaWiki
Expand Down
1 change: 0 additions & 1 deletion src/mwoffliner.lib.ts
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,6 @@ async function execute(argv: any) {
RedisStore.setOptions(argv.redis || config.defaults.redisPath)
await RedisStore.connect()
const { articleDetailXId, filesToDownloadXPath, filesToRetryXPath, redirectsXId } = RedisStore
await downloader.setBaseUrls(forceRender)
// Output directory
const outputDirectory = path.isAbsolute(_outputDirectory || '') ? _outputDirectory : path.join(process.cwd(), _outputDirectory || 'out')
await mkdirPromise(outputDirectory)
Expand Down
8 changes: 8 additions & 0 deletions src/renderers/abstract.renderer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import {
isWebpCandidateImageMimeType,
interpolateTranslationString,
encodeArticleIdForZimHtmlUrl,
getStaticFiles,
} from '../util/misc.js'

type renderType = 'auto' | 'desktop' | 'mobile' | 'specific'
Expand Down Expand Up @@ -63,6 +64,13 @@ export interface RenderSingleOutput {
export type RenderOutput = RenderSingleOutput[]

export abstract class Renderer {
public staticFilesListCommon: string[] = []
constructor() {
if (this.staticFilesListCommon.length === 0) {
this.staticFilesListCommon = getStaticFiles(config.output.jsResourcesCommon, config.output.cssResourcesCommon)
}
}

protected async treatVideo(
dump: Dump,
srcCache: KVS<boolean>,
Expand Down
2 changes: 1 addition & 1 deletion src/renderers/abstractDesktop.render.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export abstract class DesktopRenderer extends Renderer {
public staticFilesListDesktop: string[] = []
constructor() {
super()
this.staticFilesListDesktop = getStaticFiles(config.output.jsResources, config.output.mainPageCssResources.concat(config.output.cssResources))
this.staticFilesListDesktop = this.staticFilesListCommon.concat(getStaticFiles(config.output.jsResources, config.output.cssResources))
}

public filterWikimediaDesktopModules(_moduleDependencies) {
Expand Down
2 changes: 1 addition & 1 deletion src/renderers/abstractMobile.render.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export abstract class MobileRenderer extends Renderer {
public staticFilesListMobile: string[] = []
constructor() {
super()
this.staticFilesListMobile = getStaticFiles(config.output.mwMobileJsResources, config.output.wikimediaMobileCssResources)
this.staticFilesListMobile = this.staticFilesListCommon.concat(getStaticFiles(config.output.mwMobileJsResources, config.output.wikimediaMobileCssResources))
}

public filterWikimediaMobileModules(_moduleDependencies) {
Expand Down
6 changes: 4 additions & 2 deletions test/e2e/en.e2e.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,16 @@ const verifyImgElements = (imgFilesArr, imgElements) => {
}

const mwUrl = 'https://en.wikipedia.org'
const articleList = 'User:Kelson/MWoffliner_CI_reference'
const articleList = 'BMW'
const format = ''

await testAllRenders(mwUrl, articleList, format, async (outFiles) => {
const articleFromDump = await zimdump(`show --url A/${articleList} ${outFiles[0].outFile}`)
await expect(zimcheck(outFiles[0].outFile)).resolves.not.toThrowError()
describe('e2e test for en.wikipedia.org', () => {
const articleDoc = domino.createDocument(articleFromDump)
test(`test zim integrity for ${outFiles[0]?.renderer} renderer`, async () => {
await expect(zimcheck(outFiles[0].outFile)).resolves.not.toThrowError()
})
test(`test article header for ${outFiles[0]?.renderer} renderer`, async () => {
expect(articleDoc.querySelector('h1.article-header, h1.pcs-edit-section-title')).toBeTruthy()
})
Expand Down
59 changes: 0 additions & 59 deletions test/e2e/mobileRenderIntegrity.test.ts

This file was deleted.

48 changes: 48 additions & 0 deletions test/unit/saveStaticFiles.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import { startRedis, stopRedis } from './bootstrap.js'
import { jest } from '@jest/globals'
import { WikimediaDesktopRenderer } from '../../src/renderers/wikimedia-desktop.renderer.js'
import { WikimediaMobileRenderer } from '../../src/renderers/wikimedia-mobile.renderer.js'

jest.setTimeout(10000)

describe('saveStaticFiles', () => {
beforeAll(startRedis)
afterAll(stopRedis)

test('Compare desktop static files list', async () => {
const desktopAndCommonStaticFiles = [
'script.js',
'masonry.min.js',
'article_list_home.js',
'images_loaded.min.js',
'style.css',
'mobile_main_page.css',
'../node_modules/details-element-polyfill/dist/details-element-polyfill.js',
'content.parsoid.css',
'inserted_style.css',
]

const wikimediaDesktopRenderer = new WikimediaDesktopRenderer()
const staticFilesFromRenderer = wikimediaDesktopRenderer.staticFilesListDesktop

expect(desktopAndCommonStaticFiles).toEqual(staticFilesFromRenderer)
})

test('Compare mobile static files list', async () => {
const mobileAndCommonStatiFiles = [
'script.js',
'masonry.min.js',
'article_list_home.js',
'images_loaded.min.js',
'style.css',
'mobile_main_page.css',
'wm_mobile_override_script.js',
'wm_mobile_override_style.css',
]

const wikimediaMobileRenderer = new WikimediaMobileRenderer()
const staticFilesFromRenderer = wikimediaMobileRenderer.staticFilesListMobile

expect(mobileAndCommonStatiFiles).toEqual(staticFilesFromRenderer)
})
})

0 comments on commit d412ee4

Please sign in to comment.