You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Guy Sartorelli 7bf069f5bb
Merge pull request #116 from creative-commoners/pulls/4/gridfield-limited-items-per-page
1 month ago
.github/workflows MNT Add update JS deps workflow 6 months ago
_config FIX Only add extension if elemental module exists 3 months ago
client BUG Fix compatibility with latest version 5 years ago
code NEW Test class for GridField with limited number of items in the list 2 months ago
css ENHANCEMENT Migrated Stig's GridfieldTest module into here 11 years ago
images NEW: More complete block content, unique images with watermarks 1 year ago
templates/Layout Fixed deprecated template usage 10 years ago
.editorconfig Rebased with webpack 6 years ago
.eslintignore Added TestReactFormBuilder admin section, this utilises BasicFieldsTestPage fields currently. 6 years ago
.eslintrc.js BUG Fix compatibility with latest version 5 years ago
.gitignore new gitignore 5 years ago
.scrutinizer.yml Added standard Scrutinizer config 7 years ago
.upgrade.yml Namespaced model to get more 4.x test coverage 6 years ago Add counts to file task, update readme 1 year ago
_config.php Update deprecated API 6 years ago Added standard code of conduct file 7 years ago
composer.json DEP Update dependencies for CMS 5 2 months ago
package.json BUG Fix compatibility with latest version 5 years ago
webpack.config.js BUG Fix compatibility with latest version 5 years ago
yarn.lock Bump async from 2.5.0 to 2.6.4 5 months ago

Framework Test Module


Aids core and module developers in testing their code against a set of sample data and behaviour.

  • Shows all core form fields, including their disabled and readonly state
  • Shows sample GridField instance including data
  • Creates sample members (to efficiently test SecurityAdmin)
  • Creates a sample ModelAdmin instance (available at admin/test)
  • (Optional) Three-step process for the multiform module
  • (Optional) Sample page for the tagfield module
  • (Optional) Sample page for the recaptcha module


Simply running dev/build will take care of most sample data setup.

In order to use any of the optional test behaviour targeted at modules, install the module and remove the _manifest_exclude file from the relevant folder. For example, to test the tagfield module, remove the frameworktest/code/tagfield/_manifest_exclude file.

More sample data

The module creates some default pages for different CMS behaviours. The CMS is intended to be perform well with a couple of thousand pages. If you want to test the CMS behaviour for a large and nested tree, the module includes a simple generator task: dev/tasks/FTPageMakerTask. It will create 3^5 pages by default, so takes a while to run through.

Configuring the amount of data

Both FTPageMagerTask and FTFileMakerTask allow the amount of generated content to be configured. To do this, pass a comma-seprarated list of integers representing the amount of records to create at each depth.

$ vendor/bin/sake dev/tasks/FTPageMakerTask pageCounts=10,200,5,5

$ vendor/bin/sake dev/tasks/FTFileMakerTask fileCounts=5,300,55,5 folderCounts=1,5,5,5

Guaranteed unique images

The FTFileMakerTask will randomly watermark each reference to your images by default. If you want to disable this, set the uniqueImages config variable to false.


When dnadesign/silverstripe-elemental is installed, the FTPageMakerTask can also generate blocks within those pages automatically. It has a few hardcoded sample data structures for common block types, and randomly creates a number of blocks, as well as randomly choosing to publish them. Relies on files and images being available to add as sample data.

Additional setup:

composer require dnadesign/silverstripe-elemental
composer require silverstripe/elemental-bannerblock
composer require silverstripe/elemental-fileblock


# Generate some sample files to associate with blocks
sake dev/tasks/FTFileMakerTask
sake dev/tasks/FTPageMakerTask withBlocks=true


The module is intended to run against the latest core codebase, but also includes branches matching earlier core releases for backwards compatibility.