#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
const double EPS = 1e-6;
const int INF = 0x3f3f3f3f;
int n, m;
int dx[] = {1, 0, -1, 0}, dy[] = {0, 1, 0, -1}, good[55][55], bad[55][55];
bool vis[55][55];
char _map[55][55];
void DFS(int x, int y) {
  for (int i = 0; i < 4; ++i) {
    int to_x = x + dx[i], to_y = y + dy[i];
    if (to_x < 1 || to_x > n || to_y < 1 || to_y > m ||
        _map[to_x][to_y] == '#' || vis[to_x][to_y])
      continue;
    vis[to_x][to_y] = 1;
    DFS(to_x, to_y);
  }
}
int main() {
  int t;
  cin >> t;
  while (t--) {
    memset(bad, 0, sizeof(bad));
    memset(good, 0, sizeof(good));
    cin >> n >> m;
    for (int i = 1; i <= n; ++i)
      for (int j = 1; j <= m; ++j) {
        cin >> _map[i][j];
        if (_map[i][j] == 'G') good[i][j] = 1;
        if (_map[i][j] == 'B') bad[i][j] = 1;
      }
    for (int i = 1; i <= n; ++i)
      for (int j = 1; j <= m; ++j)
        if (bad[i][j] == 1) {
          for (int k = 0; k < 4; ++k) {
            int to_i = i + dx[k], to_j = j + dy[k];
            if (to_i < 1 || to_i > n || to_j < 1 || to_j > m ||
                _map[to_i][to_j] == '#')
              continue;
            _map[to_i][to_j] = '#';
          }
        }
    memset(vis, 0, sizeof(vis));
    DFS(n, m + 1);
    bool flag = true;
    for (int i = 1; i <= n; ++i)
      for (int j = 1; j <= m; ++j)
        if (good[i][j] && (!vis[i][j])) {
          flag = false;
          break;
        }
    if (flag)
      puts("YES");
    else
      puts("NO");
  }
  return 0;
}
