#include <bits/stdc++.h>
using namespace std;
string s[100];
int nn[100][100];
int n, m;
bool paint(int i, int j) {
  if (i < 0 || j < 0) return true;
  if (i >= n || j >= m) return true;
  if (s[i][j] == 'G') return false;
  if (s[i][j] == 'B') return true;
  s[i][j] = '#';
  return true;
}
bool dfs(int x, int y) {
  if (x < 0 || y < 0) return true;
  if (x >= n || y >= m) return true;
  if (s[x][y] == '#') return true;
  if (s[x][y] == 'B') return false;
  if (nn[x][y] == 1) return true;
  nn[x][y] = 1;
  dfs(x + 1, y);
  dfs(x - 1, y);
  dfs(x, y + 1);
  dfs(x, y - 1);
  return true;
}
bool good() {
  memset(nn, 0, sizeof(nn));
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (s[i][j] == 'B') {
        if (!paint(i, j + 1)) return false;
        if (!paint(i, j - 1)) return false;
        if (!paint(i - 1, j)) return false;
        if (!paint(i + 1, j)) return false;
      }
  if (!dfs(n - 1, m - 1)) return false;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (s[i][j] == 'G' && nn[i][j] == 0) return false;
  return true;
}
int main() {
  int tt;
  scanf("%d\n", &tt);
  for (int t = 0; t < tt; t++) {
    scanf("%d%d\n", &n, &m);
    for (int i = 0; i < n; i++) getline(cin, s[i]);
    if (good()) {
      cout << "Yes";
    } else {
      cout << "No";
    }
    cout << endl;
  }
}
